The problem is that the method could not find a string which length is 1,
as the only successful exit from the method was from inside the loop that
checks the second and subsequent characters.
I added the testcase for this in r945230.
In the test the bc.indexOf("o", 0, 1, 5) call returned -1, instead of 7.
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@945231
13f79535-47bb-0310-9956-
ffa450edef68
// Look for first char
int srcEnd = srcOff + srcLen;
+ mainLoop:
for( int i=myOff+start; i <= (end - srcLen); i++ ) {
if( buff[i] != first ) continue;
// found first char, now look for a match
int myPos=i+1;
for( int srcPos=srcOff + 1; srcPos< srcEnd; ) {
if( buff[myPos++] != src.charAt( srcPos++ ))
- break;
- if( srcPos==srcEnd ) return i-start; // found it
+ continue mainLoop;
}
+ return i-start; // found it
}
return -1;
}