Author: kkolinko
Date: Mon May 17 16:28:44 2010
New Revision: 945231
URL: http://svn.apache.org/viewvc?rev=945231&view=rev
Log:
Fix a bug in ByteChunk.indexOf(String, ...)
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.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java?rev=945231&r1=945230&r2=945231&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java Mon May 17
16:28:44 2010
@@ -685,15 +685,16 @@ public final class ByteChunk implements
// 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;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]