Make dumpHexString() tolerate null arrays.
Rationale: hexdumps are mainly used when verbose logging is enabled, which means that callers are rarely exercised (let alone tested). Crashing on unchecked null pointers doesn't make debugging any easier, nor production code any more robust. Moreover, this is the behavior of system.out.println() and other logging APIs. Test: runtest -x core/tests/coretests/src/com/android/internal/util/HexDumpTest.java Bug: 110177912 Change-Id: Idccd81a5654ed0f7fee6b27177941bf8c311973e
This commit is contained in:
@@ -16,18 +16,21 @@
|
||||
|
||||
package com.android.internal.util;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
|
||||
public class HexDump
|
||||
{
|
||||
private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
|
||||
private final static char[] HEX_LOWER_CASE_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
|
||||
|
||||
public static String dumpHexString(byte[] array)
|
||||
{
|
||||
public static String dumpHexString(@Nullable byte[] array) {
|
||||
if (array == null) return "(null)";
|
||||
return dumpHexString(array, 0, array.length);
|
||||
}
|
||||
|
||||
public static String dumpHexString(byte[] array, int offset, int length)
|
||||
public static String dumpHexString(@Nullable byte[] array, int offset, int length)
|
||||
{
|
||||
if (array == null) return "(null)";
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
byte[] line = new byte[16];
|
||||
|
||||
@@ -25,4 +25,7 @@ public final class HexDumpTest extends TestCase {
|
||||
assertEquals("ABCDEF", HexDump.toHexString(
|
||||
new byte[] { (byte) 0xab, (byte) 0xcd, (byte) 0xef }, true));
|
||||
}
|
||||
public void testNullArray() {
|
||||
assertEquals("(null)", HexDump.toHexString(null));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user