Skip to content

Commit 8c38421

Browse files
committed
fixup! assert,util: fix constructor lookup in deep equal comparison
1 parent 016499f commit 8c38421

2 files changed

Lines changed: 51 additions & 50 deletions

File tree

lib/internal/util/comparisons.js

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ const {
1616
Date,
1717
DatePrototypeGetTime,
1818
Error,
19-
Float16Array,
2019
Float32Array,
2120
Float64Array,
2221
Function,
@@ -51,6 +50,7 @@ const {
5150
Uint8ClampedArray,
5251
WeakMap,
5352
WeakSet,
53+
globalThis: { Float16Array },
5454
} = primordials;
5555

5656
const { compare } = internalBinding('buffer');
@@ -59,40 +59,41 @@ const { isURL } = require('internal/url');
5959
const { isError } = require('internal/util');
6060
const { Buffer } = require('buffer');
6161

62-
const wellKnownConstructors = new SafeSet();
63-
wellKnownConstructors.add(Array);
64-
wellKnownConstructors.add(ArrayBuffer);
65-
wellKnownConstructors.add(BigInt);
66-
wellKnownConstructors.add(BigInt64Array);
67-
wellKnownConstructors.add(BigUint64Array);
68-
wellKnownConstructors.add(Boolean);
69-
wellKnownConstructors.add(Buffer);
70-
wellKnownConstructors.add(DataView);
71-
wellKnownConstructors.add(Date);
72-
wellKnownConstructors.add(Error);
62+
const wellKnownConstructors = new SafeSet()
63+
.add(Array)
64+
.add(ArrayBuffer)
65+
.add(BigInt)
66+
.add(BigInt64Array)
67+
.add(BigUint64Array)
68+
.add(Boolean)
69+
.add(Buffer)
70+
.add(DataView)
71+
.add(Date)
72+
.add(Error)
73+
.add(Float32Array)
74+
.add(Float64Array)
75+
.add(Function)
76+
.add(Int16Array)
77+
.add(Int32Array)
78+
.add(Int8Array)
79+
.add(Map)
80+
.add(Number)
81+
.add(Object)
82+
.add(Promise)
83+
.add(RegExp)
84+
.add(Set)
85+
.add(String)
86+
.add(Symbol)
87+
.add(Uint16Array)
88+
.add(Uint32Array)
89+
.add(Uint8Array)
90+
.add(Uint8ClampedArray)
91+
.add(WeakMap)
92+
.add(WeakSet);
93+
7394
if (Float16Array) { // TODO(BridgeAR): Remove when regularly supported
7495
wellKnownConstructors.add(Float16Array);
7596
}
76-
wellKnownConstructors.add(Float32Array);
77-
wellKnownConstructors.add(Float64Array);
78-
wellKnownConstructors.add(Function);
79-
wellKnownConstructors.add(Int16Array);
80-
wellKnownConstructors.add(Int32Array);
81-
wellKnownConstructors.add(Int8Array);
82-
wellKnownConstructors.add(Map);
83-
wellKnownConstructors.add(Number);
84-
wellKnownConstructors.add(Object);
85-
wellKnownConstructors.add(Promise);
86-
wellKnownConstructors.add(RegExp);
87-
wellKnownConstructors.add(Set);
88-
wellKnownConstructors.add(String);
89-
wellKnownConstructors.add(Symbol);
90-
wellKnownConstructors.add(Uint16Array);
91-
wellKnownConstructors.add(Uint32Array);
92-
wellKnownConstructors.add(Uint8Array);
93-
wellKnownConstructors.add(Uint8ClampedArray);
94-
wellKnownConstructors.add(WeakMap);
95-
wellKnownConstructors.add(WeakSet);
9697

9798
const types = require('internal/util/types');
9899
const {

lib/internal/util/inspect.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -625,24 +625,24 @@ function isInstanceof(object, proto) {
625625
}
626626

627627
// Special-case for some builtin prototypes in case their `constructor` property has been tampered.
628-
const wellKnownPrototypes = new SafeMap();
629-
wellKnownPrototypes.set(ArrayPrototype, { name: 'Array', constructor: Array });
630-
wellKnownPrototypes.set(ArrayBufferPrototype, { name: 'ArrayBuffer', constructor: ArrayBuffer });
631-
wellKnownPrototypes.set(FunctionPrototype, { name: 'Function', constructor: Function });
632-
wellKnownPrototypes.set(MapPrototype, { name: 'Map', constructor: Map });
633-
wellKnownPrototypes.set(SetPrototype, { name: 'Set', constructor: Set });
634-
wellKnownPrototypes.set(ObjectPrototype, { name: 'Object', constructor: Object });
635-
wellKnownPrototypes.set(TypedArrayPrototype, { name: 'TypedArray', constructor: TypedArray });
636-
wellKnownPrototypes.set(RegExpPrototype, { name: 'RegExp', constructor: RegExp });
637-
wellKnownPrototypes.set(DatePrototype, { name: 'Date', constructor: Date });
638-
wellKnownPrototypes.set(DataViewPrototype, { name: 'DataView', constructor: DataView });
639-
wellKnownPrototypes.set(ErrorPrototype, { name: 'Error', constructor: Error });
640-
wellKnownPrototypes.set(BooleanPrototype, { name: 'Boolean', constructor: Boolean });
641-
wellKnownPrototypes.set(NumberPrototype, { name: 'Number', constructor: Number });
642-
wellKnownPrototypes.set(StringPrototype, { name: 'String', constructor: String });
643-
wellKnownPrototypes.set(PromisePrototype, { name: 'Promise', constructor: Promise });
644-
wellKnownPrototypes.set(WeakMapPrototype, { name: 'WeakMap', constructor: WeakMap });
645-
wellKnownPrototypes.set(WeakSetPrototype, { name: 'WeakSet', constructor: WeakSet });
628+
const wellKnownPrototypes = new SafeMap()
629+
.set(ArrayPrototype, { name: 'Array', constructor: Array })
630+
.set(ArrayBufferPrototype, { name: 'ArrayBuffer', constructor: ArrayBuffer })
631+
.set(FunctionPrototype, { name: 'Function', constructor: Function })
632+
.set(MapPrototype, { name: 'Map', constructor: Map })
633+
.set(SetPrototype, { name: 'Set', constructor: Set })
634+
.set(ObjectPrototype, { name: 'Object', constructor: Object })
635+
.set(TypedArrayPrototype, { name: 'TypedArray', constructor: TypedArray })
636+
.set(RegExpPrototype, { name: 'RegExp', constructor: RegExp })
637+
.set(DatePrototype, { name: 'Date', constructor: Date })
638+
.set(DataViewPrototype, { name: 'DataView', constructor: DataView })
639+
.set(ErrorPrototype, { name: 'Error', constructor: Error })
640+
.set(BooleanPrototype, { name: 'Boolean', constructor: Boolean })
641+
.set(NumberPrototype, { name: 'Number', constructor: Number })
642+
.set(StringPrototype, { name: 'String', constructor: String })
643+
.set(PromisePrototype, { name: 'Promise', constructor: Promise })
644+
.set(WeakMapPrototype, { name: 'WeakMap', constructor: WeakMap })
645+
.set(WeakSetPrototype, { name: 'WeakSet', constructor: WeakSet });
646646

647647
function getConstructorName(obj, ctx, recurseTimes, protoProps) {
648648
let firstProto;

0 commit comments

Comments
 (0)