Author: ssteiner
Date: Mon Feb 29 13:34:56 2016
New Revision: 1732894

URL: http://svn.apache.org/viewvc?rev=1732894&view=rev
Log:
FOP-2585: PDF to PDF StackOverflowError

Added:
    xmlgraphics/fop-pdf-images/trunk/test/resources/loop.pdf   (with props)
Modified:
    
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
    
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java

Modified: 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java?rev=1732894&r1=1732893&r2=1732894&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
 Mon Feb 29 13:34:56 2016
@@ -287,7 +287,7 @@ public class PDFBoxAdapter {
             return cloned;
         }
         PDFObject pdfobj = (PDFObject) cloned;
-        if (!pdfobj.hasObjectNumber()) {
+        if (pdfobj != null && !pdfobj.hasObjectNumber() && !(base instanceof 
COSDictionary)) {
             pdfDoc.registerObject(pdfobj);
             if (log.isTraceEnabled()) {
                 log.trace(key + ": " + pdfobj.getClass().getName() + " 
registered as "
@@ -302,6 +302,8 @@ public class PDFBoxAdapter {
         if (base instanceof COSObject) {
             COSObject obj = (COSObject)base;
             return obj.getObjectNumber().intValue() + " " + 
obj.getGenerationNumber().intValue();
+        } else if (base instanceof COSDictionary) {
+            return base;
         } else {
             return null;
         }

Modified: 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1732894&r1=1732893&r2=1732894&view=diff
==============================================================================
--- 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
 (original)
+++ 
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
 Mon Feb 29 13:34:56 2016
@@ -119,6 +119,7 @@ public class PDFBoxAdapterTestCase {
     private static final String IMAGE = "test/resources/image.pdf";
     private static final String HELLOTagged = "test/resources/taggedWorld.pdf";
     private static final String XFORM = "test/resources/xform.pdf";
+    private static final String LOOP = "test/resources/loop.pdf";
 
     private PDFBoxAdapter getPDFBoxAdapter() {
         PDFDocument doc = new PDFDocument("");
@@ -396,6 +397,50 @@ public class PDFBoxAdapterTestCase {
         ByteArrayOutputStream stream = pdfToPS(IMAGE);
         Assert.assertTrue(stream.toString("UTF-8"),
                 stream.toString("UTF-8").contains("%%IncludeResource: form 
FOPForm:0\nFOPForm:0 execform"));
+
+        pdfToPS(CFF1);
+        pdfToPS(CFF2);
+        pdfToPS(CFF3);
+        pdfToPS(TTCID1);
+        pdfToPS(TTCID2);
+        pdfToPS(TTSubset1);
+        pdfToPS(TTSubset2);
+        pdfToPS(TTSubset3);
+        pdfToPS(TTSubset5);
+        pdfToPS(CFFCID1);
+        pdfToPS(CFFCID2);
+        pdfToPS(Type1Subset1);
+        pdfToPS(Type1Subset2);
+        pdfToPS(Type1Subset3);
+        pdfToPS(Type1Subset4);
+        pdfToPS(ROTATE);
+        pdfToPS(LINK);
+        pdfToPS(LOOP);
+    }
+
+    @Test
+    public void testPDFToPDF() throws IOException {
+        FontInfo fi = new FontInfo();
+        writeText(fi, CFF1);
+        writeText(fi, CFF2);
+        writeText(fi, CFF3);
+        writeText(fi, CFFCID1);
+        writeText(fi, CFFCID2);
+        writeText(fi, IMAGE);
+        writeText(fi, LINK);
+        writeText(fi, ROTATE);
+        writeText(fi, SHADING);
+        writeText(fi, TTCID1);
+        writeText(fi, TTCID2);
+        writeText(fi, TTSubset1);
+        writeText(fi, TTSubset2);
+        writeText(fi, TTSubset3);
+        writeText(fi, TTSubset5);
+        writeText(fi, Type1Subset1);
+        writeText(fi, Type1Subset2);
+        writeText(fi, Type1Subset3);
+        writeText(fi, Type1Subset4);
+        writeText(fi, LOOP);
     }
 
     private ByteArrayOutputStream pdfToPS(String pdf) throws IOException, 
ImageException {

Added: xmlgraphics/fop-pdf-images/trunk/test/resources/loop.pdf
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/resources/loop.pdf?rev=1732894&view=auto
==============================================================================
Binary file - no diff available.

Propchange: xmlgraphics/fop-pdf-images/trunk/test/resources/loop.pdf
------------------------------------------------------------------------------
    svn:executable = *

Propchange: xmlgraphics/fop-pdf-images/trunk/test/resources/loop.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to