From 725195b65f8d769d8adb8a9c8c8ecc663495743e Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Sat, 3 Nov 2012 23:03:52 -0500 Subject: [PATCH] Fixes compressed object entries caching --- src/obj.js | 9 +++++++-- test/pdfs/issue1878.pdf.link | 1 + test/test_manifest.json | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 test/pdfs/issue1878.pdf.link diff --git a/src/obj.js b/src/obj.js index 07be42895..a828ed072 100644 --- a/src/obj.js +++ b/src/obj.js @@ -701,7 +701,8 @@ var XRef = (function XRefClosure() { } // compressed entry - stream = this.fetch(new Ref(e.offset, 0)); + var tableOffset = e.offset; + stream = this.fetch(new Ref(tableOffset, 0)); if (!isStream(stream)) error('bad ObjStm stream'); var first = stream.parameters.get('First'); @@ -727,7 +728,11 @@ var XRef = (function XRefClosure() { // read stream objects for cache for (i = 0; i < n; ++i) { entries.push(parser.getObj()); - this.cache[nums[i]] = entries[i]; + num = nums[i]; + var entry = this.entries[num]; + if (entry && entry.offset === tableOffset && entry.gen === i) { + this.cache[num] = entries[i]; + } } e = entries[e.gen]; if (!e) { diff --git a/test/pdfs/issue1878.pdf.link b/test/pdfs/issue1878.pdf.link new file mode 100644 index 000000000..cc3519d65 --- /dev/null +++ b/test/pdfs/issue1878.pdf.link @@ -0,0 +1 @@ +http://www.iau.org/static/scientific_meetings/postmr12.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index bf089fa4a..a174d2c80 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -727,6 +727,13 @@ "rounds": 1, "type": "load" }, + { "id": "issue1878", + "file": "pdfs/issue1878.pdf", + "md5": "b4fb0ce7c19368e7104dce3d0d34bcb3", + "rounds": 1, + "link": true, + "type": "load" + }, { "id": "issue2337", "file": "pdfs/issue2337.pdf", "md5": "ea10f4131202b9b8f2a6cb7770d3f185",