don't cache stream objects

This commit is contained in:
Andreas Gal 2011-06-04 23:18:55 -07:00
parent 5c06cd1de5
commit 378f381625

13
pdf.js
View File

@ -1262,12 +1262,9 @@ var XRef = (function() {
fetch: function(ref) { fetch: function(ref) {
var num = ref.num; var num = ref.num;
var e = this.cache[num]; var e = this.cache[num];
if (e) { if (e)
// The stream might be in use elsewhere, so clone it.
if (IsStream(e))
e = e.makeSubStream(e.start, e.length, e.dict);
return e; return e;
}
e = this.getEntry(num); e = this.getEntry(num);
var gen = ref.gen; var gen = ref.gen;
if (e.uncompressed) { if (e.uncompressed) {
@ -1292,7 +1289,11 @@ var XRef = (function() {
} }
error("bad XRef entry"); error("bad XRef entry");
} }
return this.cache[num] = parser.getObj(); e = parser.getObj();
// Don't cache streams since they are mutable.
if (!IsStream(e))
this.cache[num] = e;
return e;
} }
error("compressed entry"); error("compressed entry");
}, },