summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Astals Cid <aacid@kde.org>2011-11-16 22:54:27 +0100
committerAlbert Astals Cid <aacid@kde.org>2011-11-16 22:54:27 +0100
commit1e05bebd40171d2f11c7334b6e3f0e4c4c620083 (patch)
tree9ed939435926eebd3aec81bd6e4d93cbb346f7fc
parent3144c042d60e1bbb1ba0ee9b430a78ab2c8e155e (diff)
Adobe apparently ignores the generation number on compressed objects
Plus someother things we had already merged and some we did differently
-rw-r--r--ALL_DIFF65
1 files changed, 2 insertions, 63 deletions
diff --git a/ALL_DIFF b/ALL_DIFF
index 844f196..f71693e 100644
--- a/ALL_DIFF
+++ b/ALL_DIFF
@@ -19955,54 +19955,6 @@ diff -ru xpdf-3.02/xpdf/XRef.cc xpdf-3.03/xpdf/XRef.cc
#include "gmem.h"
#include "Object.h"
#include "Stream.h"
-@@ -52,6 +53,8 @@
- // generation 0.
- ObjectStream(XRef *xref, int objStrNumA);
-
-+ GBool isOk() { return ok; }
-+
- ~ObjectStream();
-
- // Return the object number of this object stream.
-@@ -67,6 +70,7 @@
- int nObjects; // number of objects in the stream
- Object *objs; // the objects (length = nObjects)
- int *objNums; // the object numbers (length = nObjects)
-+ GBool ok;
- };
-
- ObjectStream::ObjectStream(XRef *xref, int objStrNumA) {
-@@ -80,6 +84,7 @@
- nObjects = 0;
- objs = NULL;
- objNums = NULL;
-+ ok = gFalse;
-
- if (!xref->fetch(objStrNum, 0, &objStr)->isStream()) {
- goto err1;
-@@ -115,8 +127,8 @@
- str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first);
- parser = new Parser(xref, new Lexer(xref, str), gFalse);
- for (i = 0; i < nObjects; ++i) {
-- parser->getObj(&obj1);
-- parser->getObj(&obj2);
-+ parser->getObj(&obj1, gTrue);
-+ parser->getObj(&obj2, gTrue);
- if (!obj1.isInt() || !obj2.isInt()) {
- obj1.free();
- obj2.free();
-@@ -161,10 +173,10 @@
- }
-
- gfree(offsets);
-+ ok = gTrue;
-
- err1:
- objStr.free();
-- return;
- }
-
- ObjectStream::~ObjectStream() {
@@ -190,13 +202,14 @@
// XRef
//------------------------------------------------------------------------
@@ -20290,29 +20242,16 @@ diff -ru xpdf-3.02/xpdf/XRef.cc xpdf-3.03/xpdf/XRef.cc
break;
case xrefEntryCompressed:
-+#if 0 // Adobe apparently ignores the generation number on compressed objects
+#if 0 // Adobe apparently ignores the generation number on compressed objects
if (gen != 0) {
goto err;
}
-+#endif
+#endif
+ if (e->offset >= (Guint)size ||
+ entries[e->offset].type != xrefEntryUncompressed) {
+ error(errSyntaxError, -1, "Invalid object stream");
+ goto err;
+ }
- if (!objStr || objStr->getObjStrNum() != (int)e->offset) {
- if (objStr) {
- delete objStr;
- }
- objStr = new ObjectStream(this, e->offset);
-+ if (!objStr->isOk()) {
-+ delete objStr;
-+ objStr = NULL;
-+ goto err;
-+ }
- }
- objStr->getObject(e->gen, num, obj);
- break;
@@ -884,13 +931,16 @@
}