Use for..of Object.keys instead of for..in (#9518)
In https://github.com/babel/babel/issues/9511 (and #9495 is another symptom), @PavelKastornyy reported a node crash becaue the JavaScript heap run out of memory. The problem was that their code was adding enumerable properties to `Object.prototype`: it is something that shouldn't be done, but Babel shouldn't make node crash if someone adds them. I reduced down the problem to `for...in` loops in `@babel/traverse` that grew the memory consumption exponentially because of that unexpected properties.
This commit is contained in:
@@ -421,7 +421,7 @@ export default declare((api, options) => {
|
||||
|
||||
const specifiers = [];
|
||||
|
||||
for (const name in path.getOuterBindingIdentifiers(path)) {
|
||||
for (const name of Object.keys(path.getOuterBindingIdentifiers(path))) {
|
||||
specifiers.push(
|
||||
t.exportSpecifier(t.identifier(name), t.identifier(name)),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user