This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] pr 12350, java.lang.StringBuffer.substring.


On Sunday, Sep 21, 2003, at 21:06 Pacific/Auckland, Ralph Loader wrote:

java.lang.StringBuffer.substring is manipulating the shared flag on the
StringBuffer object incorrectly, PR java/12350.

The following patch fixes the bug and adds a test case.  It passes the
libjava/testsuite on i686-pc-linux-gnu.

Thanks Ralph.


I am checking in a slightly modified patch to both libgcj and classpath.

Regards

Bryce.


2003-09-21 Ralph Loader <suckfish@ihug.co.nz>


	PR java/12350:
	* java/lang/StringBuffer.java (substring): fix handling of shared flag.

Index: java/lang/StringBuffer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/lang/StringBuffer.java,v
retrieving revision 1.15
diff -u -r1.15 StringBuffer.java
--- java/lang/StringBuffer.java 24 Mar 2003 00:50:18 -0000      1.15
+++ java/lang/StringBuffer.java 22 Sep 2003 08:10:44 -0000
@@ -564,8 +564,9 @@
       throw new StringIndexOutOfBoundsException();
     if (len == 0)
       return "";
-    // Share the char[] unless 3/4 empty.
-    shared = (len << 2) >= value.length;
+    // Share unless substring is smaller than 1/4 of the buffer.
+    if ((len << 2) >= value.length)
+      shared = true;
     // Package constructor avoids an array copy.
     return new String(value, beginIndex, len, shared);
   }



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]