Author: jahewson
Date: Tue Sep 29 00:34:50 2015
New Revision: 1705792

URL: http://svn.apache.org/viewvc?rev=1705792&view=rev
Log:
PDFBOX-2370: Don't cache PDImageXObject or PDPattern

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1705792&r1=1705791&r2=1705792&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java 
Tue Sep 29 00:34:50 2015
@@ -27,6 +27,7 @@ import org.apache.pdfbox.pdmodel.common.
 import 
org.apache.pdfbox.pdmodel.documentinterchange.markedcontent.PDPropertyList;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
+import org.apache.pdfbox.pdmodel.graphics.color.PDPattern;
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import 
org.apache.pdfbox.pdmodel.graphics.optionalcontent.PDOptionalContentGroup;
 import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;
@@ -142,8 +143,7 @@ public final class PDResources implement
             PDColorSpace cached = cache.getColorSpace(indirect);
             if (cached != null)
             {
-                // cache disabled due to resource dependency, see PDFBOX-2370
-                //return cached
+                return cached;
             }
         }
 
@@ -159,7 +159,8 @@ public final class PDResources implement
             colorSpace = PDColorSpace.create(name, this);
         }
 
-        if (cache != null)
+        // we can't cache PDPattern, because it holds page resources, see 
PDFBOX-2370
+        if (cache != null && !(colorSpace instanceof PDPattern))
         {
             cache.put(indirect, colorSpace);
         }
@@ -321,8 +322,7 @@ public final class PDResources implement
             PDXObject cached = cache.getXObject(indirect);
             if (cached != null)
             {
-                // cache disabled due to resource dependency, see PDFBOX-2370
-                //return cached
+                return cached;
             }
         }
 
@@ -342,7 +342,8 @@ public final class PDResources implement
             xobject = PDXObject.createXObject(value, this);
         }
 
-        if (cache != null)
+        // we can't cache PDImageXObject, because it holds page resources, see 
PDFBOX-2370
+        if (cache != null && !(xobject instanceof PDImageXObject))
         {
             cache.put(indirect, xobject);
         }


Reply via email to