You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2010/06/09 23:52:10 UTC
svn commit: r953170 - 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: hindessm
Date: Wed Jun 9 21:52:10 2010
New Revision: 953170
URL: http://svn.apache.org/viewvc?rev=953170&view=rev
Log:
Applying patch from "[#HARMONY-6547] [classlib][luni] String.replace("",
CharSequence) goes out of memory".
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=953170&r1=953169&r2=953170&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 Wed Jun 9 21:52:10 2010
@@ -1323,7 +1323,20 @@ public final class String implements Ser
return this;
String rs = replacement.toString();
- StringBuilder buffer = new StringBuilder(count);
+
+ // special case if the string to match is empty then
+ // match at the start, inbetween each character and at the end
+ if ("".equals(ts)) {
+ StringBuilder buffer = new StringBuilder(count + (rs.length() * (count + 1)));
+ buffer.append(rs);
+ for(int i=0; i<count; i++) {
+ buffer.append(value[offset + i]);
+ buffer.append(rs);
+ }
+ return buffer.toString();
+ }
+
+ StringBuilder buffer = new StringBuilder(count + rs.length());
int tl = target.length();
int tail = 0;
do {
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=953170&r1=953169&r2=953170&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 Wed Jun 9 21:52:10 2010
@@ -697,6 +697,12 @@ public class String2Test extends junit.f
"a", "ccc"));
assertEquals("Failed replace by smaller seq", "$bba^", "$aaaaa^"
.replace(new StringBuilder("aa"), "b"));
+ assertEquals("Failed to replace empty string", "%%a%%b%%c%%",
+ "abc".replace("", "%%"));
+ assertEquals("Failed to replace with empty string", "aacc",
+ "aabbcc".replace("b", ""));
+ assertEquals("Failed to replace in empty string", "abc",
+ "".replace("", "abc"));
}
/**