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 2024/04/06 08:12:34 UTC

svn commit: r1916827 - /pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java

Author: lehmi
Date: Sat Apr  6 08:12:34 2024
New Revision: 1916827

URL: http://svn.apache.org/viewvc?rev=1916827&view=rev
Log:
PDFBOX-5799: search forward/backwards if the new position is after/before the current position to optimize the search for the correct stream

Modified:
    pdfbox/trunk/io/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.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=1916827&r1=1916826&r2=1916827&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 Sat Apr  6 08:12:34 2024
@@ -155,13 +155,16 @@ public class SequenceRandomAccessRead im
         }
         else
         {
-            for (int i = 0; i < numberOfReader; i++)
+            // search forward/backwards if the new position is after/before the current position
+            int increment = position < currentPosition ? -1 : 1;
+            for (int i = currentIndex; i < numberOfReader && i >= 0;)
             {
                 if (position >= startPositions[i] && position <= endPositions[i])
                 {
                     currentIndex = i;
                     break;
                 }
+                i += increment;
             }
             currentPosition = position;
         }