From a2a824ed01dc1bd817d753d7df9a84503d10204f Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 27 Mar 2019 00:00:13 +0100 Subject: [PATCH] Don't accidentally use an empty `hash` value when comparing `preEvaluatedFonts` in `PartialEvaluator.loadFont` Note that `PartialEvaluator.preEvaluateFont` will return an empty string when no hash was computed. This will complete short-circuit the `fontAlias` comparison in `PartialEvaluator.loadFont`, since fonts which are totally different will then match if their `hash`es are empty. --- src/core/evaluator.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 06951cdee..df5b1c1d7 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -695,20 +695,19 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var fontCapability = createPromiseCapability(); var preEvaluatedFont = this.preEvaluateFont(font); - var descriptor = preEvaluatedFont.descriptor; + const { descriptor, hash, } = preEvaluatedFont; var fontRefIsRef = isRef(fontRef), fontID; if (fontRefIsRef) { fontID = fontRef.toString(); } - if (isDict(descriptor)) { + if (hash && isDict(descriptor)) { if (!descriptor.fontAliases) { descriptor.fontAliases = Object.create(null); } - var fontAliases = descriptor.fontAliases; - var hash = preEvaluatedFont.hash; + if (fontAliases[hash]) { var aliasFontRef = fontAliases[hash].aliasRef; if (fontRefIsRef && aliasFontRef && @@ -785,7 +784,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { try { // error, but it's still nice to have font type reported - var descriptor = preEvaluatedFont.descriptor; var fontFile3 = descriptor && descriptor.get('FontFile3'); var subtype = fontFile3 && fontFile3.get('Subtype'); var fontType = getFontType(preEvaluatedFont.type,