Merge pull request #9935 from Snuffleupagus/builtInCMapCache-cleanup-regression

[Regression] Convert `Catalog.builtInCMapCache` into a `Map`, instead of an Object, to ensure that it's correctly reset (PR 8064 follow-up)
This commit is contained in:
Tim van der Meij 2018-07-29 16:07:45 +02:00 committed by GitHub
commit 39846a6de3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 6 deletions

View File

@ -132,16 +132,15 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
this.pdfFunctionFactory = pdfFunctionFactory; this.pdfFunctionFactory = pdfFunctionFactory;
this.fetchBuiltInCMap = (name) => { this.fetchBuiltInCMap = (name) => {
var cachedCMap = this.builtInCMapCache[name]; if (this.builtInCMapCache.has(name)) {
if (cachedCMap) { return Promise.resolve(this.builtInCMapCache.get(name));
return Promise.resolve(cachedCMap);
} }
return this.handler.sendWithPromise('FetchBuiltInCMap', { return this.handler.sendWithPromise('FetchBuiltInCMap', {
name, name,
}).then((data) => { }).then((data) => {
if (data.compressionType !== CMapCompressionType.NONE) { if (data.compressionType !== CMapCompressionType.NONE) {
// Given the size of uncompressed CMaps, only cache compressed ones. // Given the size of uncompressed CMaps, only cache compressed ones.
this.builtInCMapCache[name] = data; this.builtInCMapCache.set(name, data);
} }
return data; return data;
}); });

View File

@ -38,7 +38,7 @@ var Catalog = (function CatalogClosure() {
} }
this.fontCache = new RefSetCache(); this.fontCache = new RefSetCache();
this.builtInCMapCache = Object.create(null); this.builtInCMapCache = new Map();
this.pageKidsCountCache = new RefSetCache(); this.pageKidsCountCache = new RefSetCache();
// TODO refactor to move getPage() to the PDFDocument. // TODO refactor to move getPage() to the PDFDocument.
this.pageFactory = pageFactory; this.pageFactory = pageFactory;
@ -449,7 +449,7 @@ var Catalog = (function CatalogClosure() {
delete font.translated; delete font.translated;
} }
this.fontCache.clear(); this.fontCache.clear();
this.builtInCMapCache = Object.create(null); this.builtInCMapCache.clear();
}); });
}, },