[poppler] Branch 'xpdf303merge' - 2 commits - poppler/Lexer.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Thu Oct 27 10:42:37 PDT 2011


 poppler/Lexer.cc |   43 +++++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

New commits:
commit 76295f4d401c36bdef3b2a20d18ac57a3b976410
Author: Albert Astals Cid <aacid at kde.org>
Date:   Thu Oct 27 19:42:42 2011 +0200

    xpdf303: Adopt xpdf solution for the name too long problem

diff --git a/poppler/Lexer.cc b/poppler/Lexer.cc
index e4d8641..efdc076 100644
--- a/poppler/Lexer.cc
+++ b/poppler/Lexer.cc
@@ -432,30 +432,27 @@ Object *Lexer::getObj(Object *obj, int objNum) {
 	}
       }
      notEscChar:
-      if (n == tokBufSize) {
-	if (!s)
-	{
-	  error(errSyntaxError, getPos(), "Warning: name token is longer than what the specification says it can be");
-	  s = new GooString(tokBuf, tokBufSize);
-	}
-	else
-	{
-	  // the spec says 127 is the maximum, we are already at 256 so bail out
-	  error(errSyntaxError, getPos(), "Name token too long");
-	  break;
-	}
-	p = tokBuf;
-	n = 0;
-      }
-      *p++ = c;
+      // the PDF spec claims that names are limited to 127 chars, but
+      // Distiller 8 will produce longer names, and Acrobat 8 will
+      // accept longer names
       ++n;
+      if (n < tokBufSize) {
+	*p++ = c;
+      } else if (n == tokBufSize) {
+	error(errSyntaxError, getPos(), "Warning: name token is longer than what the specification says it can be");
+	*p = c;
+	s = new GString(tokBuf, n);
+      } else {
+	s->append((char)c);
+      }
     }
-    *p = '\0';
-    if (s) {
-      s->append(tokBuf, n);
+    if (n < tokBufSize) {
+      *p = '\0';
+      obj->initName(tokBuf);
+    } else {
       obj->initName(s->getCString());
       delete s;
-    } else obj->initName(tokBuf);
+    }
     break;
 
   // array punctuation
commit be6d4c19b8ce1515ce995eee408dc5752012c649
Author: Albert Astals Cid <aacid at kde.org>
Date:   Thu Oct 27 19:34:38 2011 +0200

    xpdf303: Add brackets

diff --git a/poppler/Lexer.cc b/poppler/Lexer.cc
index 9864244..e4d8641 100644
--- a/poppler/Lexer.cc
+++ b/poppler/Lexer.cc
@@ -228,8 +228,9 @@ Object *Lexer::getObj(Object *obj, int objNum) {
 	break;
       }
     }
-    if (neg)
+    if (neg) {
       xi = -xi;
+    }
     if (unlikely(overflownInteger)) {
       if (overflownUnsignedInteger) {
         obj->initError();
@@ -263,8 +264,9 @@ Object *Lexer::getObj(Object *obj, int objNum) {
       xf = xf + scale * (c - '0');
       scale *= 0.1;
     }
-    if (neg)
+    if (neg) {
       xf = -xf;
+    }
     obj->initReal(xf);
     break;
 


More information about the poppler mailing list