Author: niallp Date: Wed Dec 22 23:03:20 2010 New Revision: 1052095 URL: http://svn.apache.org/viewvc?rev=1052095&view=rev Log: IO-257 Fix BOMInputStream's read(byte[]) can return 0 which it should not - thanks to Teemu Lång
Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java?rev=1052095&r1=1052094&r2=1052095&view=diff ============================================================================== --- commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java (original) +++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/BOMInputStream.java Wed Dec 22 23:03:20 2010 @@ -284,7 +284,7 @@ public class BOMInputStream extends Prox } } int secondCount = in.read(buf, off, len); - return (secondCount < 0) ? firstCount : firstCount + secondCount; + return (secondCount < 0) ? (firstCount > 0 ? firstCount : -1) : firstCount + secondCount; } /** Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java?rev=1052095&r1=1052094&r2=1052095&view=diff ============================================================================== --- commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java (original) +++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java Wed Dec 22 23:03:20 2010 @@ -204,6 +204,20 @@ public class BOMInputStreamTest extends assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM()); } + public void testEmptyBufferWithoutBOM() throws Exception { + byte[] data = new byte[] {}; + InputStream in = new BOMInputStream(createDataStream(data, false)); + byte[] buf = new byte[1024]; + assertEquals(-1, in.read(buf)); + } + + public void testEmptyBufferWithBOM() throws Exception { + byte[] data = new byte[] {}; + InputStream in = new BOMInputStream(createDataStream(data, true)); + byte[] buf = new byte[1024]; + assertEquals(-1, in.read(buf)); + } + public void testLargeBufferWithoutBOM() throws Exception { byte[] data = new byte[] { 'A', 'B', 'C' }; InputStream in = new BOMInputStream(createDataStream(data, false));