From 725195b65f8d769d8adb8a9c8c8ecc663495743e Mon Sep 17 00:00:00 2001
From: Yury Delendik <ydelendik@mozilla.com>
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",