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/22 22:13:01 UTC

svn commit: r1304066 - in /commons/proper/io/trunk/src: changes/changes.xml main/java/org/apache/commons/io/IOUtils.java test/java/org/apache/commons/io/IOUtilsTestCase.java

Author: sebb
Date: Thu Mar 22 21:13:00 2012
New Revision: 1304066

URL: http://svn.apache.org/viewvc?rev=1304066&view=rev
Log:
IO-311 IOUtils.read(InputStream/Reader) ignores the offset parameter

Modified:
    commons/proper/io/trunk/src/changes/changes.xml
    commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
    commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.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=1304066&r1=1304065&r2=1304066&view=diff
==============================================================================
--- commons/proper/io/trunk/src/changes/changes.xml (original)
+++ commons/proper/io/trunk/src/changes/changes.xml Thu Mar 22 21:13:00 2012
@@ -40,6 +40,9 @@ The <action> type attribute can be add,u
 
   <body>
     <release version="2.2" date="TBA" description="">
+      <action issue="IO-311" dev="sebb" type="fix" due-to="Robert Muir">
+        IOUtils.read(InputStream/Reader) ignores the offset parameter
+      </action>        
       <action issue="IO-312" dev="sebb" type="fix">
         CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize
       </action>        

Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java?rev=1304066&r1=1304065&r2=1304066&view=diff
==============================================================================
--- commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java (original)
+++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java Thu Mar 22 21:13:00 2012
@@ -1977,7 +1977,7 @@ public class IOUtils {
         int remaining = length;
         while (remaining > 0) {
             int location = length - remaining;
-            int count = input.read(buffer, location, remaining);
+            int count = input.read(buffer, offset + location, remaining);
             if (EOF == count) { // EOF
                 break;
             }
@@ -2023,7 +2023,7 @@ public class IOUtils {
         int remaining = length;
         while (remaining > 0) {
             int location = length - remaining;
-            int count = input.read(buffer, location, remaining);
+            int count = input.read(buffer, offset + location, remaining);
             if (EOF == count) { // EOF
                 break;
             }

Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java?rev=1304066&r1=1304065&r2=1304066&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java (original)
+++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java Thu Mar 22 21:13:00 2012
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.io.StringReader;
 import java.net.URI;
 import java.net.URL;
 import java.nio.channels.Selector;
@@ -732,6 +733,23 @@ public class IOUtilsTestCase extends Fil
         }
         IOUtils.closeQuietly(input);
     }
+    
+    public void testReadReaderWithOffset() throws Exception {
+        Reader reader = new StringReader("abcd1234");
+        char[] buffer = "wx00000000".toCharArray();
+        IOUtils.readFully(reader, buffer, 2, 8);
+        assertEquals("wxabcd1234", new String(buffer));
+        IOUtils.closeQuietly(reader);
+    }
+    
+    public void testReadStreamWithOffset() throws Exception {
+        byte[] bytes = "abcd1234".getBytes("UTF-8");
+        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
+        byte[] buffer = "wx00000000".getBytes("UTF-8");
+        IOUtils.readFully(stream, buffer, 2, 8);
+        assertEquals("wxabcd1234", new String(buffer, 0, buffer.length, "UTF-8"));
+        IOUtils.closeQuietly(stream);
+    }
 
     // Tests from IO-305