tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Thomas <ma...@apache.org>
Subject Re: svn commit: r945231 - /tomcat/trunk/java/org/apache/tomcat/util/buf/ByteChunk.java
Date Mon, 17 May 2010 16:39:09 GMT
On 17/05/2010 17:28, kkolinko@apache.org wrote:
> 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;
>      }

That's pretty ugly. Is there really no other way?

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message