You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2012/03/13 18:29:40 UTC

svn commit: r1300249 - in /commons/proper/io/trunk/src: changes/changes.xml main/java/org/apache/commons/io/input/ReaderInputStream.java test/java/org/apache/commons/io/input/ReaderInputStreamTest.java

Author: sebb
Date: Tue Mar 13 17:29:39 2012
New Revision: 1300249

URL: http://svn.apache.org/viewvc?rev=1300249&view=rev
Log:
IO-306 ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0

Modified:
    commons/proper/io/trunk/src/changes/changes.xml
    commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
    commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java

Modified: commons/proper/io/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=1300249&r1=1300248&r2=1300249&view=diff
==============================================================================
--- commons/proper/io/trunk/src/changes/changes.xml (original)
+++ commons/proper/io/trunk/src/changes/changes.xml Tue Mar 13 17:29:39 2012
@@ -40,6 +40,9 @@ The <action> type attribute can be add,u
 
   <body>
     <release version="2.2" date="TBA">
+      <action dev="sebb" type="fix" issue="IO-306">
+        ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0
+      </action>        
       <action dev="sebb" type="add" issue="IO-173" due-to="Marcos Vinícius da Silva">
         FileUtils.listFiles() doesn't return directories
       </action>        

Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReaderInputStream.java?rev=1300249&r1=1300248&r2=1300249&view=diff
==============================================================================
--- commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReaderInputStream.java (original)
+++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/input/ReaderInputStream.java Tue Mar 13 17:29:39 2012
@@ -221,6 +221,9 @@ public class ReaderInputStream extends I
     @Override
     public int read(byte[] b, int off, int len) throws IOException {
         int read = 0;
+        if (len == 0) {
+            return 0; // Always return 0 if len == 0
+        }
         while (len > 0) {
             if (encoderOut.hasRemaining()) {
                 int c = Math.min(encoderOut.remaining(), len);

Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java?rev=1300249&r1=1300248&r2=1300249&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java (original)
+++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java Tue Mar 13 17:29:39 2012
@@ -105,9 +105,24 @@ public class ReaderInputStreamTest {
     
     @Test
     public void testReadZero() throws Exception {
-        ReaderInputStream r = new ReaderInputStream(new StringReader("test"));
+        final String inStr = "test";
+        ReaderInputStream r = new ReaderInputStream(new StringReader(inStr));
         byte[] bytes = new byte[30];
         assertEquals(0, r.read(bytes, 0, 0));
+        assertEquals(inStr.length(), r.read(bytes, 0, inStr.length()+1));
+        // Should always return 0 for length == 0
+        assertEquals(0, r.read(bytes, 0, 0));
+    }
+    
+    @Test
+    public void testReadZeroEmptyString() throws Exception {
+        ReaderInputStream r = new ReaderInputStream(new StringReader(""));
+        byte[] bytes = new byte[30];
+        // Should always return 0 for length == 0
+        assertEquals(0, r.read(bytes, 0, 0));
+        assertEquals(-1, r.read(bytes, 0, 1));
+        assertEquals(0, r.read(bytes, 0, 0));
+        assertEquals(-1, r.read(bytes, 0, 1));
     }
     
     /**