bayard 2002/11/22 17:06:56
Modified: lang/src/test/org/apache/commons/lang Tag: LANG_1_0_BRANCH
StringUtilsTest.java
lang/src/java/org/apache/commons/lang Tag: LANG_1_0_BRANCH
StringUtils.java
Log:
Put in a Unit Test to check for bug #14062 and the fix.
The fix is courtesy of Mark McDowell [[EMAIL PROTECTED]]
Revision Changes Path
No revision
No revision
1.5.2.1 +7 -1
jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java
Index: StringUtilsTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -u -r1.5 -r1.5.2.1
--- StringUtilsTest.java 19 Sep 2002 07:02:30 -0000 1.5
+++ StringUtilsTest.java 23 Nov 2002 01:06:56 -0000 1.5.2.1
@@ -183,6 +183,12 @@
assertEquals("split(Object[], String, int) failed", expected[i],
result[i]);
}
+
+ result = StringUtils.split("one two three four five six", null, 3);
+ assertEquals("split(Object[], null, int)[0] failed", "one", result[0]);
+ assertEquals("split(Object[], null, int)[1] failed", "two", result[1]);
+ assertEquals("split(Object[], null, int)[2] failed", "three four five six",
result[2]);
+
}
public void testReplaceFunctions()
No revision
No revision
1.18.2.1 +9 -10
jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java
Index: StringUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java,v
retrieving revision 1.18
retrieving revision 1.18.2.1
diff -u -r1.18 -r1.18.2.1
--- StringUtils.java 30 Sep 2002 00:50:10 -0000 1.18
+++ StringUtils.java 23 Nov 2002 01:06:56 -0000 1.18.2.1
@@ -459,25 +459,24 @@
String[] list = new String[listSize];
int i = 0;
+ int lastTokenBegin = 0;
+ int lastTokenEnd = 0;
while (tok.hasMoreTokens()) {
if (max > 0 && i == listSize - 1) {
// In the situation where we hit the max yet have
// tokens left over in our input, the last list
// element gets all remaining text.
- StringBuffer buf = new StringBuffer((int) 1.2 * str.length() *
(listSize - i) / listSize);
- while (tok.hasMoreTokens()) {
- buf.append(tok.nextToken());
- if (tok.hasMoreTokens()) {
- buf.append(separator);
- }
- }
- list[i] = buf.toString();
+ String endToken = tok.nextToken();
+ lastTokenBegin = str.indexOf(endToken, lastTokenEnd);
+ list[i] = str.substring(lastTokenBegin);
break;
} else {
list[i] = tok.nextToken();
+ lastTokenBegin = str.indexOf(list[i], lastTokenEnd);
+ lastTokenEnd = lastTokenBegin + list[i].length();
}
i++;
- }
+ }
return list;
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>