Author: tilman
Date: Fri Apr 4 13:22:32 2025
New Revision: 1924772
URL: http://svn.apache.org/viewvc?rev=1924772&view=rev
Log:
PDFBOX-5981: don't return -1 for length 0
Modified:
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java
Modified:
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1924772&r1=1924771&r2=1924772&view=diff
==============================================================================
---
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
(original)
+++
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
Fri Apr 4 13:22:32 2025
@@ -115,6 +115,10 @@ public class SequenceRandomAccessRead im
public int read(byte[] b, int offset, int length) throws IOException
{
checkClosed();
+ if (length == 0)
+ {
+ return 0;
+ }
int maxAvailBytes = Math.min(available(), length);
if (maxAvailBytes == 0)
{
Modified:
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java?rev=1924772&r1=1924771&r2=1924772&view=diff
==============================================================================
---
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java
(original)
+++
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java
Fri Apr 4 13:22:32 2025
@@ -240,4 +240,27 @@ class SequenceRandomAccessReadTest
assertTrue(sequenceRandomAccessRead.isEOF());
}
}
+
+ @Test
+ void testPDFBox5981() throws IOException
+ {
+ RandomAccessReadBuffer r1 = new RandomAccessReadBuffer(new byte[2448]);
+ RandomAccessReadBuffer r2 = new RandomAccessReadBuffer(new byte[2412]);
+ RandomAccessReadBuffer r3 = new RandomAccessReadBuffer(new byte[2417]);
+ RandomAccessReadBuffer r4 = new RandomAccessReadBuffer(new byte[2433]);
+ RandomAccessReadBuffer r5 = new RandomAccessReadBuffer(new byte[2432]);
+ RandomAccessReadBuffer r6 = new RandomAccessReadBuffer(new byte[2416]);
+ RandomAccessReadBuffer r7 = new RandomAccessReadBuffer(new byte[2417]);
+ RandomAccessReadBuffer r8 = new RandomAccessReadBuffer(new byte[2266]);
+
+ try (SequenceRandomAccessRead srar = new
SequenceRandomAccessRead(List.of(r1, r2, r3, r4, r5, r6, r7, r8));
+ RandomAccessInputStream rais = new RandomAccessInputStream(srar))
+ {
+ int rc = rais.read(new byte[0], 0, 0);
+ assertEquals(0, rc);
+ byte[] result = rais.readAllBytes();
+ assertEquals(19241, result.length);
+ assertEquals(srar.length(), result.length);
+ }
+ }
}