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 2021/05/31 06:23:37 UTC

svn commit: r1890334 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Author: lehmi
Date: Mon May 31 06:23:36 2021
New Revision: 1890334

URL: http://svn.apache.org/viewvc?rev=1890334&view=rev
Log:
PDFBOX-5170: avoid mixing up cross reference tables with cross reference streams

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1890334&r1=1890333&r2=1890334&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Mon May 31 06:23:36 2021
@@ -703,9 +703,9 @@ public class COSWriter implements ICOSVi
         trailer.accept(this);
     }
 
-    private void doWriteXRefInc(COSDocument doc, long hybridPrev) throws IOException
+    private void doWriteXRefInc(COSDocument doc, boolean hasHybridXRef) throws IOException
     {
-        if (doc.isXRefStream() || hybridPrev != -1)
+        if (doc.isXRefStream() || hasHybridXRef)
         {
             // the file uses XrefStreams, so we need to update
             // it with an xref stream. We create a new one and fill it
@@ -736,12 +736,11 @@ public class COSWriter implements ICOSVi
             COSStream stream2 = pdfxRefStream.getStream();
             doWriteObject(stream2);
         }
-
-        if (!doc.isXRefStream() || hybridPrev != -1)
+        else
         {
             COSDictionary trailer = doc.getTrailer();
             trailer.setLong(COSName.PREV, doc.getStartXref());
-            if (hybridPrev != -1)
+            if (hasHybridXRef)
             {
                 trailer.removeItem(COSName.XREF_STM);
                 trailer.setLong(COSName.XREF_STM, getStartxref());
@@ -1296,16 +1295,16 @@ public class COSWriter implements ICOSVi
 
         // get the previous trailer
         COSDictionary trailer = doc.getTrailer();
-        long hybridPrev = -1;
+        boolean hasHybridXRef = false;
 
         if (trailer != null)
         {
-            hybridPrev = trailer.getLong(COSName.XREF_STM);
+            hasHybridXRef = trailer.getLong(COSName.XREF_STM) != -1;
         }
 
         if(incrementalUpdate || doc.isXRefStream())
         {
-            doWriteXRefInc(doc, hybridPrev);
+            doWriteXRefInc(doc, hasHybridXRef);
         }
         else
         {