Author: tilman
Date: Tue Mar  4 08:12:33 2025
New Revision: 1924161

URL: http://svn.apache.org/viewvc?rev=1924161&view=rev
Log:
PDFBOX-5965: reset EOF if rewind is possible; improve test

Modified:
    
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStream.java
    
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java

Modified: 
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStream.java?rev=1924161&r1=1924160&r2=1924161&view=diff
==============================================================================
--- 
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStream.java
 (original)
+++ 
pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStream.java
 Tue Mar  4 08:12:33 2025
@@ -243,6 +243,7 @@ public class NonSeekableRandomAccessRead
             bufferBytes[LAST] = -1;
             currentBufferPointer = bufferBytes[CURRENT] - 
remainingBytesToRewind;
             position -= bytes;
+            isEOF = false;
         }
         else
         {

Modified: 
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java?rev=1924161&r1=1924160&r2=1924161&view=diff
==============================================================================
--- 
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java
 (original)
+++ 
pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java
 Tue Mar  4 08:12:33 2025
@@ -152,6 +152,25 @@ class NonSeekableRandomAccessReadInputSt
             assertEquals(7, randomAccessSource.getPosition());
             randomAccessSource.rewind(4);
             assertEquals(3, randomAccessSource.getPosition());
+
+            // PDFBOX-5965: check that it also works near EOF
+            assertEquals(3, randomAccessSource.read());
+            assertEquals(4, randomAccessSource.read());
+            assertEquals(5, randomAccessSource.read());
+            assertEquals(6, randomAccessSource.read());
+            assertEquals(7, randomAccessSource.read());
+            assertEquals(8, randomAccessSource.read());
+            assertEquals(9, randomAccessSource.read());
+            assertEquals(10, randomAccessSource.read());
+            assertEquals(-1, randomAccessSource.read());
+            assertTrue(randomAccessSource.isEOF());
+            randomAccessSource.rewind(4);
+            assertFalse(randomAccessSource.isEOF());
+            assertEquals(7, randomAccessSource.read());
+            assertEquals(8, randomAccessSource.read());
+            assertEquals(9, randomAccessSource.read());
+            assertEquals(10, randomAccessSource.read());
+            assertEquals(-1, randomAccessSource.read());
         }
     }
 


Reply via email to