OSDN Git Service

* java/lang/StringBuffer.java (substring): Don't set `shared' on
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Sep 2003 06:19:24 +0000 (06:19 +0000)
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Sep 2003 06:19:24 +0000 (06:19 +0000)
small Strings, even if buffer is already shared.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71726 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/lang/StringBuffer.java

index cadf1aa..3100d2f 100644 (file)
@@ -1,3 +1,8 @@
+2003-09-24  Bryce McKinlay  <bryce@mckinlay.net.nz>
+
+       * java/lang/StringBuffer.java (substring): Don't set `shared' on small
+       Strings, even if buffer is already shared.
+
 2003-09-24  Michael Koch  <konqueror@gmx.de>
 
        * acinclude.m4 (AM_LC_LOCALES): Added check for locale.h.
index a7c2590..0903b40 100644 (file)
@@ -564,11 +564,12 @@ public final class StringBuffer implements Serializable, CharSequence
       throw new StringIndexOutOfBoundsException();
     if (len == 0)
       return "";
-    // Share unless substring is smaller than 1/4 of the buffer.
-    if ((len << 2) >= value.length)
-      shared = true;
+    // Don't copy unless substring is smaller than 1/4 of the buffer.
+    boolean share_buffer = ((len << 2) >= value.length);
+    if (share_buffer)
+      this.shared = true;
     // Package constructor avoids an array copy.
-    return new String(value, beginIndex, len, shared);
+    return new String(value, beginIndex, len, share_buffer);
   }
 
   /**