You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2010/09/27 11:57:24 UTC

svn commit: r1001652 - in /harmony/enhanced/java/trunk/classlib/modules/luni/src: main/java/java/lang/String.java test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java

Author: odeakin
Date: Mon Sep 27 09:57:24 2010
New Revision: 1001652

URL: http://svn.apache.org/viewvc?rev=1001652&view=rev
Log:
According to the spec, String.concat() should return a new String object whenever the parameter String length is not 0. Also add a regression test to check this.

Modified:
    harmony/enhanced/java/trunk/classlib/modules/luni/src/main/java/java/lang/String.java
    harmony/enhanced/java/trunk/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java

Modified: harmony/enhanced/java/trunk/classlib/modules/luni/src/main/java/java/lang/String.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/luni/src/main/java/java/lang/String.java?rev=1001652&r1=1001651&r2=1001652&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/luni/src/main/java/java/lang/String.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/luni/src/main/java/java/lang/String.java Mon Sep 27 09:57:24 2010
@@ -678,14 +678,17 @@ public final class String implements Ser
      *         specified string.
      */
     public String concat(String string) {
-        if (string.count > 0 && count > 0) {
-            char[] buffer = new char[count + string.count];
+        if (string.count == 0) {
+            return this;
+        }
+
+        char[] buffer = new char[count + string.count];
+        if (count > 0) {
             System.arraycopy(value, offset, buffer, 0, count);
-            System.arraycopy(string.value, string.offset, buffer, count,
-                    string.count);
-            return new String(0, buffer.length, buffer);
         }
-        return count == 0 ? string : this;
+        System.arraycopy(string.value, string.offset, buffer, count,
+                string.count);
+        return new String(0, buffer.length, buffer);
     }
 
     /**

Modified: harmony/enhanced/java/trunk/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java?rev=1001652&r1=1001651&r2=1001652&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java (original)
+++ harmony/enhanced/java/trunk/classlib/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java Mon Sep 27 09:57:24 2010
@@ -282,6 +282,7 @@ public class String2Test extends junit.f
         String s2 = "s2";
         String s3 = s1.concat(s2);
         assertEquals(s2, s3);
+        assertNotSame(s2, s3);
 
         s3 = s2.concat(s1);
         assertSame(s2, s3);