Ensure that PDFDocument.checkFirstPage
waits for cleanup to complete (PR 10392 follow-up)
Given how this method is currently used there shouldn't be any fonts loaded at the point in time where it's called, but it does seem like a bad idea to assume that that's always going to be the case. Since `PDFDocument.checkFirstPage` is already asynchronous, it's easy enough to simply await `Catalog.cleanup` here. (The patch also makes a tiny simplification in a loop in `Catalog.cleanup`.)
This commit is contained in:
parent
514b500a6c
commit
a02122e984
@ -664,13 +664,13 @@ class PDFDocument {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkFirstPage() {
|
checkFirstPage() {
|
||||||
return this.getPage(0).catch((reason) => {
|
return this.getPage(0).catch(async (reason) => {
|
||||||
if (reason instanceof XRefEntryException) {
|
if (reason instanceof XRefEntryException) {
|
||||||
// Clear out the various caches to ensure that we haven't stored any
|
// Clear out the various caches to ensure that we haven't stored any
|
||||||
// inconsistent and/or incorrect state, since that could easily break
|
// inconsistent and/or incorrect state, since that could easily break
|
||||||
// subsequent `this.getPage` calls.
|
// subsequent `this.getPage` calls.
|
||||||
this._pagePromises.length = 0;
|
this._pagePromises.length = 0;
|
||||||
this.cleanup();
|
await this.cleanup();
|
||||||
|
|
||||||
throw new XRefParseException();
|
throw new XRefParseException();
|
||||||
}
|
}
|
||||||
|
@ -671,9 +671,8 @@ class Catalog {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return Promise.all(promises).then((translatedFonts) => {
|
return Promise.all(promises).then((translatedFonts) => {
|
||||||
for (let i = 0, ii = translatedFonts.length; i < ii; i++) {
|
for (const { dict, } of translatedFonts) {
|
||||||
const font = translatedFonts[i].dict;
|
delete dict.translated;
|
||||||
delete font.translated;
|
|
||||||
}
|
}
|
||||||
this.fontCache.clear();
|
this.fontCache.clear();
|
||||||
this.builtInCMapCache.clear();
|
this.builtInCMapCache.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user