You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by je...@apache.org on 2011/11/02 08:31:33 UTC

svn commit: r1196481 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java

Author: jeremias
Date: Wed Nov  2 07:31:32 2011
New Revision: 1196481

URL: http://svn.apache.org/viewvc?rev=1196481&view=rev
Log:
PDFBOX-804:
Bugfix: "mul}" was detected as one token.
Endless loop fixed with line breaks in the function.

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java?rev=1196481&r1=1196480&r2=1196481&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/type4/Parser.java Wed Nov  2 07:31:32 2011
@@ -229,6 +229,7 @@ public class Parser
                 }
             }
             handler.newLine(buffer);
+            nextChar();
         }
 
         private void scanWhitespace()
@@ -303,6 +304,8 @@ public class Parser
                 case LF:
                 case FF:
                 case EOT:
+                case '{':
+                case '}':
                     break loop;
                 default:
                     buffer.append(ch);

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java?rev=1196481&r1=1196480&r2=1196481&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/type4/TestParser.java Wed Nov  2 07:31:32 2011
@@ -62,4 +62,19 @@ public class TestParser extends TestCase
 
         assertEquals(1.0E-5, InstructionSequenceBuilder.parseReal("1.0E-5"), 0.00001f);
     }
+
+    /**
+     * Tests problematic functions from PDFBOX-804.
+     * @throws Exception if an error occurs
+     */
+    public void testJira804() throws Exception
+    {
+        //This is an example of a tint to CMYK function
+        //Problems here were:
+        //1. no whitespace between "mul" and "}" (token was detected as "mul}")
+        //2. line breaks cause endless loops
+        Type4Tester.create("1 {dup dup .72 mul exch 0 exch .38 mul}\n")
+            .pop(0.38f).pop(0f).pop(0.72f).pop(1.0f).isEmpty();
+
+    }
 }