Skip to content

Commit 56af125

Browse files
aduh95danielleadams
authored andcommitted
lib: make safe primordials safe to construct
PR-URL: #36428 Reviewed-By: Rich Trott <[email protected]>
1 parent 82393ae commit 56af125

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

lib/internal/per_context/primordials.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -146,21 +146,31 @@ primordials.makeSafe = makeSafe;
146146

147147
// Subclass the constructors because we need to use their prototype
148148
// methods later.
149+
// Defining the `constructor` is necessary here to avoid the default
150+
// constructor which uses the user-mutable `%ArrayIteratorPrototype%.next`.
149151
primordials.SafeMap = makeSafe(
150152
Map,
151-
class SafeMap extends Map {}
153+
class SafeMap extends Map {
154+
constructor(i) { super(i); } // eslint-disable-line no-useless-constructor
155+
}
152156
);
153157
primordials.SafeWeakMap = makeSafe(
154158
WeakMap,
155-
class SafeWeakMap extends WeakMap {}
159+
class SafeWeakMap extends WeakMap {
160+
constructor(i) { super(i); } // eslint-disable-line no-useless-constructor
161+
}
156162
);
157163
primordials.SafeSet = makeSafe(
158164
Set,
159-
class SafeSet extends Set {}
165+
class SafeSet extends Set {
166+
constructor(i) { super(i); } // eslint-disable-line no-useless-constructor
167+
}
160168
);
161169
primordials.SafeWeakSet = makeSafe(
162170
WeakSet,
163-
class SafeWeakSet extends WeakSet {}
171+
class SafeWeakSet extends WeakSet {
172+
constructor(i) { super(i); } // eslint-disable-line no-useless-constructor
173+
}
164174
);
165175

166176
// Create copies of the namespace objects

0 commit comments

Comments
 (0)