Convert the startXRefParsedCache variable, in src/core/obj.js, from an object to a set

We only want to track XRef starting points instead of actual data, so
using a set conveys that intention more clearly and is slightly more
efficient.
This commit is contained in:
Tim van der Meij 2021-04-05 19:20:10 +02:00
parent 6ddc297170
commit fc0cd4a443
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762

View File

@ -1944,18 +1944,18 @@ var XRef = (function XRefClosure() {
// Keep track of already parsed XRef tables, to prevent an infinite loop // Keep track of already parsed XRef tables, to prevent an infinite loop
// when parsing corrupt PDF files where e.g. the /Prev entries create a // when parsing corrupt PDF files where e.g. the /Prev entries create a
// circular dependency between tables (fixes bug1393476.pdf). // circular dependency between tables (fixes bug1393476.pdf).
const startXRefParsedCache = Object.create(null); const startXRefParsedCache = new Set();
try { try {
while (this.startXRefQueue.length) { while (this.startXRefQueue.length) {
var startXRef = this.startXRefQueue[0]; var startXRef = this.startXRefQueue[0];
if (startXRefParsedCache[startXRef]) { if (startXRefParsedCache.has(startXRef)) {
warn("readXRef - skipping XRef table since it was already parsed."); warn("readXRef - skipping XRef table since it was already parsed.");
this.startXRefQueue.shift(); this.startXRefQueue.shift();
continue; continue;
} }
startXRefParsedCache[startXRef] = true; startXRefParsedCache.add(startXRef);
stream.pos = startXRef + stream.start; stream.pos = startXRef + stream.start;