GeezerVison is showing github.com — lib: make safe primordials safe to construct · nodejs/node@56af125
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/internal/per_context/primordials.js +14-4Lines changed: 14 additions & 4 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -146,21 +146,31 @@ primordials.makeSafe = makeSafe; |
146 | 146 |
|
147 | 147 | // Subclass the constructors because we need to use their prototype |
148 | 148 | // methods later. |
| 149 | +// Defining the `constructor` is necessary here to avoid the default |
| 150 | +// constructor which uses the user-mutable `%ArrayIteratorPrototype%.next`. |
149 | 151 | primordials.SafeMap = makeSafe( |
150 | 152 | Map, |
151 | | - class SafeMap extends Map {} |
| 153 | + class SafeMap extends Map { |
| 154 | + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor |
| 155 | + } |
152 | 156 | ); |
153 | 157 | primordials.SafeWeakMap = makeSafe( |
154 | 158 | WeakMap, |
155 | | - class SafeWeakMap extends WeakMap {} |
| 159 | + class SafeWeakMap extends WeakMap { |
| 160 | + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor |
| 161 | + } |
156 | 162 | ); |
157 | 163 | primordials.SafeSet = makeSafe( |
158 | 164 | Set, |
159 | | - class SafeSet extends Set {} |
| 165 | + class SafeSet extends Set { |
| 166 | + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor |
| 167 | + } |
160 | 168 | ); |
161 | 169 | primordials.SafeWeakSet = makeSafe( |
162 | 170 | WeakSet, |
163 | | - class SafeWeakSet extends WeakSet {} |
| 171 | + class SafeWeakSet extends WeakSet { |
| 172 | + constructor(i) { super(i); } // eslint-disable-line no-useless-constructor |
| 173 | + } |
164 | 174 | ); |
165 | 175 |
|
166 | 176 | // Create copies of the namespace objects |
|