poppler/XRef.cc | 12 +++++++----- poppler/XRef.h | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-)
New commits: commit 7fbeaac5c0d0240564add6c252c1ba7c14639d98 Author: Albert Astals Cid <[email protected]> Date: Tue Apr 17 20:36:51 2012 +0200 Be sure we are checking a non free entry diff --git a/poppler/XRef.cc b/poppler/XRef.cc index feb7960..e025107 100644 --- a/poppler/XRef.cc +++ b/poppler/XRef.cc @@ -1146,7 +1146,7 @@ int XRef::getNumEntry(Guint offset) for (int i = 1; i < size; ++i) { e = getEntry(i, gFalse); - if (e->offset < offset && e->offset >= resOffset) + if (e->type != xrefEntryFree && e->offset < offset && e->offset >= resOffset) { res = i; resOffset = e->offset; commit d1254c7e8e995302542093968a0c2967f3c0b5ff Author: Thomas Freitag <[email protected]> Date: Tue Apr 17 20:36:03 2012 +0200 Do not complain if the entry does not exist XRef::getNumEntry is only trying to find which entry a given stream pos belongs so no need to cry if the entry is not there Bug 48679 diff --git a/poppler/XRef.cc b/poppler/XRef.cc index 80ce17f..feb7960 100644 --- a/poppler/XRef.cc +++ b/poppler/XRef.cc @@ -1145,7 +1145,7 @@ int XRef::getNumEntry(Guint offset) XRefEntry *e; for (int i = 1; i < size; ++i) { - e = getEntry(i); + e = getEntry(i, gFalse); if (e->offset < offset && e->offset >= resOffset) { res = i; @@ -1314,7 +1314,7 @@ GBool XRef::parseEntry(Guint offset, XRefEntry *entry) return r; } -XRefEntry *XRef::getEntry(int i) +XRefEntry *XRef::getEntry(int i, GBool complainIfMissing) { if (entries[i].type == xrefEntryNone) { @@ -1371,8 +1371,10 @@ XRefEntry *XRef::getEntry(int i) } if (entries[i].type == xrefEntryNone) { - error(errSyntaxError, -1, "Invalid XRef entry"); - entries[i].type = xrefEntryFree; + if (complainIfMissing) { + error(errSyntaxError, -1, "Invalid XRef entry"); + } + entries[i].type = xrefEntryFree; } } } diff --git a/poppler/XRef.h b/poppler/XRef.h index ea2c1b4..4cba474 100644 --- a/poppler/XRef.h +++ b/poppler/XRef.h @@ -127,7 +127,7 @@ public: int getNumEntry(Guint offset); // Direct access. - XRefEntry *getEntry(int i); + XRefEntry *getEntry(int i, GBool complainIfMissing = gTrue); Object *getTrailerDict() { return &trailerDict; } // Write access _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
