Doesn't this break the spec for ensureCapacity [1]?

It seems to cause a test case failure for me:

expected:<12> but was:<10>

junit.framework.AssertionFailedError: expected:<12> but was:<10>
at
org.apache.harmony.luni.tests.java.lang.StringBuilderTest.test_ensureCapacityI(StringBuilderTest.java:624)

[1]
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuilder.html#ensureCapacity(int)

Regards,
Tim


[email protected] wrote:
> Author: regisxu
> Date: Fri May  8 05:54:20 2009
> New Revision: 772849
> 
> URL: http://svn.apache.org/viewvc?rev=772849&view=rev
> Log:
> enlarge half size of buffer to reduce wasted memory
> 
> Modified:
>     
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/AbstractStringBuilder.java
> 
> Modified: 
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/AbstractStringBuilder.java
> URL: 
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/AbstractStringBuilder.java?rev=772849&r1=772848&r2=772849&view=diff
> ==============================================================================
> --- 
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/AbstractStringBuilder.java
>  (original)
> +++ 
> harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/AbstractStringBuilder.java
>  Fri May  8 05:54:20 2009
> @@ -91,8 +91,8 @@
>      }
>  
>      private void enlargeBuffer(int min) {
> -        int twice = (value.length << 1) + 2;
> -        char[] newData = new char[min > twice ? min : twice];
> +        int newSize = (value.length >> 1 + value.length) + 2;
> +        char[] newData = new char[min > newSize ? min : newSize];
>          System.arraycopy(value, 0, newData, 0, count);
>          value = newData;
>          shared = false;
> 
> 
> 

Reply via email to