summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--luni/src/main/java/java/util/Arrays.java20
-rw-r--r--luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java33
2 files changed, 43 insertions, 10 deletions
diff --git a/luni/src/main/java/java/util/Arrays.java b/luni/src/main/java/java/util/Arrays.java
index 6af24b0..d479945 100644
--- a/luni/src/main/java/java/util/Arrays.java
+++ b/luni/src/main/java/java/util/Arrays.java
@@ -2912,8 +2912,14 @@ public class Arrays {
* @since Android 1.0
*/
public static String deepToString(Object[] array) {
+ // Special case null to prevent NPE
+ if (array == null) {
+ return "null"; //$NON-NLS-1$
+ }
// delegate this to the recursive method
- return deepToStringImpl(array, new Object[] { array }, null);
+ StringBuilder buf = new StringBuilder(2 + array.length * 5);
+ deepToStringImpl(array, new Object[] { array }, buf);
+ return buf.toString();
}
/**
@@ -2932,18 +2938,13 @@ public class Arrays {
* @return the result.
* @see #deepToString(Object[])
*/
- private static String deepToStringImpl(Object[] array, Object[] origArrays,
+ private static void deepToStringImpl(Object[] array, Object[] origArrays,
StringBuilder sb) {
if (array == null) {
- return "null"; //$NON-NLS-1$
- }
- if (array.length == 0) {
- return "[]"; //$NON-NLS-1$
+ sb.append("null"); //$NON-NLS-1$
+ return;
}
- if (sb == null) {
- sb = new StringBuilder(2 + array.length * 5);
- }
sb.append('[');
for (int i = 0; i < array.length; i++) {
@@ -3006,7 +3007,6 @@ public class Arrays {
}
}
sb.append(']');
- return sb.toString();
}
/**
diff --git a/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java b/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java
index 3b673f3..b26dd43 100644
--- a/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java
+++ b/luni/src/test/java/org/apache/harmony/luni/tests/java/util/ArraysTest.java
@@ -468,6 +468,39 @@ public class ArraysTest extends TestCase {
fail("No NPE");
} catch (NullPointerException e) {}
}
+
+ /**
+ * @tests java.util.Arrays#deepToString(Object[])
+ * @bug 1452542
+ */
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "Tests fix for Android bug 1452542",
+ method = "deepToString",
+ args = {java.lang.Object[].class}
+ )
+ public void test_deepToStringNestedEmptyArray() {
+ Object[][] foo = new Object[1][];
+ foo[0] = new Object[0];
+ assertEquals("[[]]", Arrays.deepToString(foo));
+ }
+
+ /**
+ * @tests java.util.Arrays#deepToString(Object[])
+ * @bug 1452542
+ */
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ notes = "Tests fix for Android bug 1452542",
+ method = "deepToString",
+ args = {java.lang.Object[].class}
+ )
+ public void test_deepToStringNestedNullArray() {
+ Object[][] foo = new Object[1][];
+ assertEquals("[null]", Arrays.deepToString(foo));
+ }
+
+
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",