diff --git a/src/java/org/apache/poi/util/HexDump.java b/src/java/org/apache/poi/util/HexDump.java index 77a49ed04..710797b6b 100644 --- a/src/java/org/apache/poi/util/HexDump.java +++ b/src/java/org/apache/poi/util/HexDump.java @@ -73,6 +73,12 @@ public class HexDump throws IOException, ArrayIndexOutOfBoundsException, IllegalArgumentException { + if (data.length == 0) + { + stream.write( "No Data".getBytes() ); + stream.flush(); + return; + } if ((index < 0) || (index >= data.length)) { throw new ArrayIndexOutOfBoundsException( @@ -83,6 +89,7 @@ public class HexDump { throw new IllegalArgumentException("cannot write to nullstream"); } + long display_offset = offset + index; StringBuffer buffer = new StringBuffer(74); diff --git a/src/testcases/org/apache/poi/util/TestHexDump.java b/src/testcases/org/apache/poi/util/TestHexDump.java index 9c9e48607..6189d3e44 100644 --- a/src/testcases/org/apache/poi/util/TestHexDump.java +++ b/src/testcases/org/apache/poi/util/TestHexDump.java @@ -277,6 +277,11 @@ public class TestHexDump // as expected } + + // verify proper behaviour with empty byte array + ByteArrayOutputStream os = new ByteArrayOutputStream( ); + HexDump.dump( new byte[0], 0, os, 0 ); + assertEquals( "No Data", os.toString() ); } public void testToHex()