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/11 06:10:23 UTC

svn commit: r1880759 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/io/ test/java/org/apache/pdfbox/io/

Author: lehmi
Date: Tue Aug 11 06:10:23 2020
New Revision: 1880759

URL: http://svn.apache.org/viewvc?rev=1880759&view=rev
Log:
PDFBOX-4836: return -1 instead of 0 if reaching EOF

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadBuffer.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadMemoryMappedFile.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadView.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.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=1880759&r1=1880758&r2=1880759&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 11 06:10:23 2020
@@ -246,11 +246,11 @@ public class RandomAccessReadBuffer impl
     public int read(byte[] b, int offset, int length) throws IOException
     {
         checkClosed();
-        if (pointer >= size)
+        int bytesRead = readRemainingBytes(b, offset, length);
+        if (bytesRead == -1)
         {
-            return 0;
+            return -1;
         }
-        int bytesRead = readRemainingBytes(b, offset, length);
         while (bytesRead < length && available() > 0)
         {
             bytesRead += readRemainingBytes(b, offset + bytesRead, length - bytesRead);
@@ -266,14 +266,14 @@ public class RandomAccessReadBuffer impl
     {
         if (pointer >= size)
         {
-            return 0;
+            return -1;
         }
         int maxLength = (int) Math.min(length, size - pointer);
         int remainingBytes = chunkSize - currentBufferPointer;
         // no more bytes left
         if (remainingBytes == 0)
         {
-            return 0;
+            return -1;
         }
         if (maxLength >= remainingBytes)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadMemoryMappedFile.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadMemoryMappedFile.java?rev=1880759&r1=1880758&r2=1880759&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadMemoryMappedFile.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadMemoryMappedFile.java Tue Aug 11 06:10:23 2020
@@ -130,7 +130,7 @@ public class RandomAccessReadMemoryMappe
     {
         if (isEOF())
         {
-            return 0;
+            return -1;
         }
         int remainingBytes = (int)size - mappedByteBuffer.position();
         mappedByteBuffer.get(b, offset, Math.min(remainingBytes, length));

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadView.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadView.java?rev=1880759&r1=1880758&r2=1880759&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadView.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessReadView.java Tue Aug 11 06:10:23 2020
@@ -109,7 +109,7 @@ public class RandomAccessReadView implem
     {
         if (isEOF())
         {
-            return 0;
+            return -1;
         }
         restorePosition();
         int readBytes = randomAccessRead.read(b, off, Math.min(len, available()));
@@ -143,6 +143,7 @@ public class RandomAccessReadView implem
     @Override
     public void close() throws IOException
     {
+        // System.out.println("Close RARV " + startPosition + ", " + streamLength);
         checkClosed();
         randomAccessRead = null;
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java?rev=1880759&r1=1880758&r2=1880759&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java Tue Aug 11 06:10:23 2020
@@ -112,9 +112,13 @@ public class SequenceRandomAccessRead im
     {
         checkClosed();
         int maxAvailBytes = Math.min(available(), length);
+        if (maxAvailBytes == 0)
+        {
+            return -1;
+        }
         RandomAccessRead randomAccessRead = getCurrentReader();
         int bytesRead = randomAccessRead.read(b, offset, maxAvailBytes);
-        while (bytesRead < maxAvailBytes)
+        while (bytesRead > -1 && bytesRead < maxAvailBytes)
         {
             randomAccessRead = getCurrentReader();
             bytesRead += randomAccessRead.read(b, offset + bytesRead, maxAvailBytes - bytesRead);

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=1880759&r1=1880758&r2=1880759&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 11 06:10:23 2020
@@ -134,7 +134,7 @@ public class RandomAccessReadBufferTest
         assertEquals(-1, randomAccessSource.read());
         assertEquals(-1, randomAccessSource.peek());
         byte[] readBytes = new byte[6];
-        assertEquals(0, randomAccessSource.read(readBytes));
+        assertEquals(-1, randomAccessSource.read(readBytes));
         randomAccessSource.seek(0);
         assertEquals(0, randomAccessSource.getPosition());
         randomAccessSource.seek(6);