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);
+ }
+ }
+
}