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 2022/02/28 15:58:00 UTC

svn commit: r1898481 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java

Author: lehmi
Date: Mon Feb 28 15:57:59 2022
New Revision: 1898481

URL: http://svn.apache.org/viewvc?rev=1898481&view=rev
Log:
PDFBOX-5286: add all indirect objects, simplify

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java?rev=1898481&r1=1898480&r2=1898481&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/compress/COSWriterCompressionPool.java Mon Feb 28 15:57:59 2022
@@ -109,10 +109,10 @@ public class COSWriterCompressionPool
         // It shall never contain the document's root dictionary. (relevant for document encryption)
         // It shall never contain other streams.
         if ((key != null && key.getGeneration() != 0)
+                || base instanceof COSStream
                 || (document.getEncryption() != null
                         && base == document.getEncryption().getCOSObject())
-                || base == this.document.getDocument().getTrailer().getCOSDictionary(COSName.ROOT)
-                || base instanceof COSStream)
+                || base == this.document.getDocument().getTrailer().getCOSDictionary(COSName.ROOT))
         {
             COSObjectKey actualKey = objectPool.put(key, base);
             if (actualKey == null)
@@ -141,29 +141,22 @@ public class COSWriterCompressionPool
      * @param traversedObject A Collection of all objects, that have already been traversed, to avoid cycles.
      * @throws IOException Shall be thrown, if compressing the object failed.
      */
-    private COSBase addStructure(TraversedCOSElement traversedObject) throws IOException
+    private void addStructure(TraversedCOSElement traversedObject) throws IOException
     {
         COSBase current = traversedObject.getCurrentObject();
         COSBase base = current;
-        COSBase retVal = current;
-
         if (current instanceof COSStream
                 || (current instanceof COSDictionary && !current.isDirect()))
         {
             base = addObjectToPool(base.getKey(), traversedObject);
-            retVal = base;
         }
         else if (current instanceof COSObject)
         {
             base = ((COSObject) current).getObject();
-            if (base instanceof COSDictionary || base instanceof COSArray)
+            if (base != null)
             {
                 base = addObjectToPool(current.getKey(), traversedObject);
             }
-            else
-            {
-                retVal = base;
-            }
         }
 
         if (base instanceof COSArray)
@@ -174,7 +167,6 @@ public class COSWriterCompressionPool
         {
             addCOSDictionary(traversedObject, (COSDictionary) base);
         }
-        return retVal;
     }
 
     private void addCOSArray(TraversedCOSElement traversedObject, COSArray array) throws IOException