From 95ef518ec749d6ff8853e74fe570e9efd0a50c71 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Tue, 23 Oct 2012 19:40:51 +0200 Subject: [PATCH] the missing filter detection code was broken --- src/internfile/internfile.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/internfile/internfile.cpp b/src/internfile/internfile.cpp index c3d59698..27fd2981 100644 --- a/src/internfile/internfile.cpp +++ b/src/internfile/internfile.cpp @@ -483,21 +483,23 @@ TempFile FileInterner::dataToTempFile(const string& dt, const string& mt) } // See if the error string is formatted as a missing helper message, -// accumulate helper name if it is +// accumulate helper name if it is. The format of the message is: +// RECFILTERROR HELPERNOTFOUND program1 [program2 ...] void FileInterner::checkExternalMissing(const string& msg, const string& mt) { + LOGDEB2(("checkExternalMissing: [%s]\n", msg.c_str())); if (m_missingdatap && msg.find("RECFILTERROR") == 0) { - vector lerr; - stringToStrings(msg, lerr); - if (lerr.size() > 2) { - vector::iterator it = lerr.begin(); - lerr.erase(it++); + vector verr; + stringToStrings(msg, verr); + if (verr.size() > 2) { + vector::iterator it = verr.begin(); + it++; if (*it == "HELPERNOTFOUND") { - lerr.erase(it++); - string s; - stringsToString(lerr, s); - m_missingdatap->m_missingExternal.insert(s); - m_missingdatap->m_typesForMissing[s].insert(mt); + it++; + for (; it < verr.end(); it++) { + m_missingdatap->m_missingExternal.insert(*it); + m_missingdatap->m_typesForMissing[*it].insert(mt); + } } } }