From 820fb7f9694a34d4780464db034e01945696cc4c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald <jonas.jenwald@gmail.com> Date: Wed, 28 Oct 2020 14:14:27 +0100 Subject: [PATCH] Update all `Object.fromEntries` call-sites to ensure that a `null` prototype is used Given that `Object.fromEntries` doesn't seem to *guarantee* that a `null` prototype is used, we thus hack around that by using `Object.assign` with `Object.create(null)`. --- src/display/annotation_storage.js | 4 +++- src/display/metadata.js | 4 ++-- src/display/optional_content_config.js | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/display/annotation_storage.js b/src/display/annotation_storage.js index e1b4fac3a..3bd751192 100644 --- a/src/display/annotation_storage.js +++ b/src/display/annotation_storage.js @@ -13,6 +13,8 @@ * limitations under the License. */ +import { objectFromEntries } from "../shared/util.js"; + /** * Key/value storage for annotation data in forms. */ @@ -67,7 +69,7 @@ class AnnotationStorage { if (this._storage.size === 0) { return null; } - return Object.fromEntries(this._storage); + return objectFromEntries(this._storage); } get size() { diff --git a/src/display/metadata.js b/src/display/metadata.js index d29246228..963eac926 100644 --- a/src/display/metadata.js +++ b/src/display/metadata.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { assert } from "../shared/util.js"; +import { assert, objectFromEntries } from "../shared/util.js"; import { SimpleXMLParser } from "../shared/xml_parser.js"; class Metadata { @@ -118,7 +118,7 @@ class Metadata { } getAll() { - return Object.fromEntries(this._metadataMap); + return objectFromEntries(this._metadataMap); } has(name) { diff --git a/src/display/optional_content_config.js b/src/display/optional_content_config.js index da9f00794..7e664a3e5 100644 --- a/src/display/optional_content_config.js +++ b/src/display/optional_content_config.js @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { warn } from "../shared/util.js"; +import { objectFromEntries, warn } from "../shared/util.js"; class OptionalContentGroup { constructor(name, intent) { @@ -145,7 +145,7 @@ class OptionalContentConfig { if (!this._groups.size) { return null; } - return Object.fromEntries(this._groups); + return objectFromEntries(this._groups); } getGroup(id) {