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 2013/01/13 17:59:36 UTC
svn commit: r1432658 - in /pdfbox/trunk/pdfbox/src:
main/java/org/apache/pdfbox/io/RandomAccessBuffer.java
test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java
Author: lehmi
Date: Sun Jan 13 16:59:36 2013
New Revision: 1432658
URL: http://svn.apache.org/viewvc?rev=1432658&view=rev
Log:
PDFBOX-1490: extend the buffer if the last byte was written to the last chunk
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBuffer.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBuffer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBuffer.java?rev=1432658&r1=1432657&r2=1432658&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBuffer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBuffer.java Sun Jan 13 16:59:36 2013
@@ -172,6 +172,7 @@ public class RandomAccessBuffer implemen
*/
public void write(int b) throws IOException
{
+ // end of buffer reached?
if (currentBufferPointer >= BUFFER_SIZE)
{
if (pointer + BUFFER_SIZE >= Integer.MAX_VALUE)
@@ -186,6 +187,15 @@ public class RandomAccessBuffer implemen
{
this.size = pointer;
}
+ // end of buffer reached now?
+ if (currentBufferPointer >= BUFFER_SIZE)
+ {
+ if (pointer + BUFFER_SIZE >= Integer.MAX_VALUE)
+ {
+ throw new IOException("RandomAccessBuffer overflow");
+ }
+ expandBuffer();
+ }
}
/**
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java?rev=1432658&r1=1432657&r2=1432658&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java Sun Jan 13 16:59:36 2013
@@ -210,4 +210,16 @@ public class TestRandomAccessBuffer exte
}
assertEquals(25, result);
}
+
+ public void testPDFBOX1490() throws Exception
+ {
+ // create a buffer filled with 16383 * "0"
+ byte[] byteArray = new byte[ BUFFER_SIZE-1];
+ RandomAccessBuffer buffer = new RandomAccessBuffer();
+ buffer.write(byteArray,0, byteArray.length);
+ // fill the first buffer until the end
+ buffer.write(0);
+ // seek the current == last position in the first buffer chunk
+ buffer.seek(buffer.getPosition());
+ }
}