You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/04/10 12:47:42 UTC

svn commit: r1888585 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java

Author: tilman
Date: Sat Apr 10 12:47:42 2021
New Revision: 1888585

URL: http://svn.apache.org/viewvc?rev=1888585&view=rev
Log:
PDFBOX-5161: get the next buffer + test

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java?rev=1888585&r1=1888584&r2=1888585&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java Sat Apr 10 12:47:42 2021
@@ -227,7 +227,14 @@ public class RandomAccessReadBuffer impl
         int bytesRead = readRemainingBytes(b, offset, length);
         if (bytesRead == -1)
         {
-            return -1;
+            if (available() > 0)
+            {
+                bytesRead = 0;
+            }
+            else
+            {
+                return -1;
+            }
         }
         while (bytesRead < length && available() > 0)
         {

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java?rev=1888585&r1=1888584&r2=1888585&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java Sat Apr 10 12:47:42 2021
@@ -235,4 +235,24 @@ class RandomAccessReadBufferTest
         }
         Files.delete(path);
     }
+    
+    /**
+     * PDFBOX-5161: failure to read bytes after reading a multiple of 4096. Construction source
+     * must be an InputStream.
+     *
+     * @throws IOException
+     */
+    @Test
+    void testPDFBOX5161() throws IOException
+    {
+        try (RandomAccessRead rar = new RandomAccessReadBuffer(new ByteArrayInputStream(new byte[4099])))
+        {
+            byte[] buf = new byte[4096];
+            int bytesRead = rar.read(buf);
+            assertEquals(4096, bytesRead);
+            bytesRead = rar.read(buf, 0, 3);
+            assertEquals(3, bytesRead);
+        }
+    }
+
 }