From ghutchis@wso.williams.edu Mon Mar 19 09:54:48 2001 Date: Mon, 19 Mar 2001 12:38:54 -0500 (EST) From: Geoff Hutchison To: htdig-dev@lists.sourceforge.net Subject: [htdig-dev] Re: HtRegexList problems OK, the patch at the end of this message should fix most of the problems people have seen with the 3.2.0b4-031801 snapshot. I still cannot reproduce Alexander Cohen's bug with HtRegexList: http://sourceforge.net/tracker/index.php?func=detail&aid=405277&group_id=4593&atid=104593 I am still looking through the code based on his backtrace and will try to solve the problem. -Geoff Index: htlib/HtRegexList.cc =================================================================== RCS file: /cvsroot/htdig/htdig/htlib/Attic/HtRegexList.cc,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -c -3 -p -r1.1.2.4 -r1.1.2.5 *** htlib/HtRegexList.cc 2001/03/17 20:34:46 1.1.2.4 --- htlib/HtRegexList.cc 2001/03/19 17:35:55 1.1.2.5 *************** *** 9,15 **** // or the GNU General Public License version 2 or later // // ! // $Id: HtRegexList.cc,v 1.1.2.4 2001/03/17 20:34:46 ghutchis Exp $ // #ifdef HAVE_CONFIG_H --- 9,15 ---- // or the GNU General Public License version 2 or later // // ! // $Id: HtRegexList.cc,v 1.1.2.5 2001/03/19 17:35:55 ghutchis Exp $ // #ifdef HAVE_CONFIG_H *************** const String &HtRegexList::lastError() *** 44,52 **** int HtRegexList::setEscaped(StringList &list, int case_sensitive) { String *str; String transformedLimits, currentPattern, prevPattern; ! HtRegex *limit; list.Start_Get(); while ((str = (String *) list.Get_Next())) --- 44,58 ---- int HtRegexList::setEscaped(StringList &list, int case_sensitive) { + if (list.Count() == 0) + { + compiled = TRUE; + return TRUE; + } + String *str; String transformedLimits, currentPattern, prevPattern; ! HtRegex *limit = new HtRegex; list.Start_Get(); while ((str = (String *) list.Get_Next())) *************** HtRegexList::setEscaped(StringList &list *** 68,79 **** if (!currentPattern.empty()) currentPattern << "|"; currentPattern << transformedLimits; - if (!limit->set(currentPattern.get(), case_sensitive)) { if (prevPattern.empty()) // we haven't set anything yet! { lastErrorMessage = limit->lastError(); return FALSE; } limit->set(prevPattern.get(), case_sensitive); // Go back a step --- 74,85 ---- if (!currentPattern.empty()) currentPattern << "|"; currentPattern << transformedLimits; if (!limit->set(currentPattern.get(), case_sensitive)) { if (prevPattern.empty()) // we haven't set anything yet! { lastErrorMessage = limit->lastError(); + compiled = 0; return FALSE; } limit->set(prevPattern.get(), case_sensitive); // Go back a step *************** HtRegexList::setEscaped(StringList &list *** 83,89 **** } prevPattern = currentPattern; } ! return TRUE; } int --- 89,98 ---- } prevPattern = currentPattern; } ! Add(limit); // OK, we're done so just add the last compiled pattern ! ! compiled = 1; ! return TRUE; } int _______________________________________________ htdig-dev mailing list htdig-dev@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/htdig-dev