summaryrefslogtreecommitdiffstats
path: root/luni
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-07-15 18:14:52 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2009-07-15 18:14:52 -0700
commit1910f6f54c3768f19bba8e1c5a045164d5d171ac (patch)
treee10672f183b46b4dd46ecb30f79876cc3ed2b73c /luni
parent848c2d057d28c3d44b064ca76df3823699dee184 (diff)
parent30c1371ef5297784c970a02bc2c850e948911d02 (diff)
downloadlibcore-1910f6f54c3768f19bba8e1c5a045164d5d171ac.zip
libcore-1910f6f54c3768f19bba8e1c5a045164d5d171ac.tar.gz
libcore-1910f6f54c3768f19bba8e1c5a045164d5d171ac.tar.bz2
am 6fbc4eb4: Merge change 7410 into donut
Merge commit '6fbc4eb48bf368199f31a25fae60f8f7a378cc52' * commit '6fbc4eb48bf368199f31a25fae60f8f7a378cc52': Fix bug: Arrays.deepToSting renders "[null]" as "null"; "[[]]" as "[]"; etc.
Diffstat (limited to 'luni')
-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 = "",