You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2020/08/04 15:45:48 UTC
svn commit: r1880571 - in /pdfbox/trunk/pdfbox/src:
main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
test/java/org/apache/pdfbox/io/RandomAccessReadBufferTest.java
Author: lehmi
Date: Tue Aug 4 15:45:48 2020
New Revision: 1880571
URL: http://svn.apache.org/viewvc?rev=1880571&view=rev
Log:
PDFBOX-4836: support RandomAccessRead for empty buffers
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=1880571&r1=1880570&r2=1880571&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 Tue Aug 4 15:45:48 2020
@@ -188,8 +188,8 @@ public class RandomAccessReadBuffer impl
if (pointer < size)
{
// calculate the chunk list index
- bufferListIndex = (int) (pointer / chunkSize);
- currentBufferPointer = (int) (pointer % chunkSize);
+ bufferListIndex = chunkSize > 0 ? (int) (pointer / chunkSize) : 0;
+ currentBufferPointer = chunkSize > 0 ? (int) (pointer % chunkSize) : 0;
currentBuffer = bufferList.get(bufferListIndex);
}
else
@@ -198,7 +198,7 @@ public class RandomAccessReadBuffer impl
// jump to the end of the buffer
bufferListIndex = bufferListMaxIndex;
currentBuffer = bufferList.get(bufferListIndex);
- currentBufferPointer = (int) (size % chunkSize);
+ currentBufferPointer = chunkSize > 0 ? (int) (size % chunkSize) : 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=1880571&r1=1880570&r2=1880571&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 Tue Aug 4 15:45:48 2020
@@ -16,7 +16,10 @@
package org.apache.pdfbox.io;
+import static org.junit.Assert.assertEquals;
+
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.junit.Assert;
@@ -121,4 +124,23 @@ public class RandomAccessReadBufferTest
randomAccessSource.close();
}
+
+ @Test
+ public void testEmptyBuffer() throws IOException
+ {
+ RandomAccessReadBuffer randomAccessSource = new RandomAccessReadBuffer(
+ new ByteArrayOutputStream().toByteArray());
+
+ assertEquals(-1, randomAccessSource.read());
+ assertEquals(-1, randomAccessSource.peek());
+ byte[] readBytes = new byte[6];
+ assertEquals(0, randomAccessSource.read(readBytes));
+ randomAccessSource.seek(0);
+ assertEquals(0, randomAccessSource.getPosition());
+ randomAccessSource.seek(6);
+ assertEquals(6, randomAccessSource.getPosition());
+ randomAccessSource.rewind(3);
+ assertEquals(3, randomAccessSource.getPosition());
+ randomAccessSource.close();
+ }
}