src/jdk/nashorn/internal/objects/NativeString.java
Print this page
@@ -839,11 +839,11 @@
public static Object split(final Object self, final Object separator, final Object limit) {
final String str = checkObjectToString(self);
final long lim = (limit == UNDEFINED) ? JSType.MAX_UINT : JSType.toUint32(limit);
if (separator == UNDEFINED) {
- return new NativeArray(new Object[]{str});
+ return limit == 0 ? new NativeArray() : new NativeArray(new Object[]{str});
}
if (separator instanceof NativeRegExp) {
return ((NativeRegExp) separator).split(str, lim);
}
@@ -852,12 +852,13 @@
return splitString(str, JSType.toString(separator), lim);
}
private static Object splitString(String str, String separator, long limit) {
if (separator.isEmpty()) {
- final Object[] array = new Object[str.length()];
- for (int i = 0; i < array.length; i++) {
+ final int length = (int) Math.min(str.length(), limit);
+ final Object[] array = new Object[length];
+ for (int i = 0; i < length; i++) {
array[i] = String.valueOf(str.charAt(i));
}
return new NativeArray(array);
}