This fixes a bug in the indexOf (char*) function: The search for a substring 
must be terminated when its last character reaches the last position of the
data; the faulty code terminates the search only when the first character
reaches the last position! The bug was revealed when indexOf was called to
remove "/../" substrings from a path, in case the path is of the form
"abcd/xx/../yy/". Although logically removed, this substring was found again
because the search doesn't terminate in time, and the result was "abcd" instead
of "abcd/yy/". The problem didn't occur for a path of the form "abcd/xx/../yy",
which was correctly reduced to "abcd/yy".

*** htdig-3.0.8b2/htlib/String.cc.orig  Fri Aug 15 08:59:38 1997
--- htdig-3.0.8b2/htlib/String.cc       Fri Sep  4 22:20:52 1998
***************
*** 254,260 ****
  {
      int               len = strlen(str);
      int               i;
!     for (i = 0; i < Length; i++)
      {
        if (strncmp(&Data[i], str, len) == 0)
            return i;
--- 254,261 ----
  {
      int               len = strlen(str);
      int               i;
!     /* OLD CODE: for (i = 0; i < Length; i++) */
!     for (i = 0; i <= Length-len; i++)
      {
        if (strncmp(&Data[i], str, len) == 0)
            return i;

--
Dr. Zvi Har'El     mailto:[EMAIL PROTECTED]     Department of Mathematics
+972-4-8294094(Phone)                Technion - Israel Institute of Technology
+972-4-8324654(FAX)  http://www.math.technion.ac.il/~rl/   Haifa 32000, ISRAEL
``If you can't say somethin' nice, don't say nothin' at all.''--Thumper (1942)

----------------------------------------------------------------------
To unsubscribe from the htdig mailing list, send a message to
[EMAIL PROTECTED] containing the single word "unsubscribe" in
the body of the message.

Reply via email to