Skip to content

Commit 810e27a

Browse files
author
Frank Schmid
committed
Use iterative approach to prevent stackoverflows
1 parent 68d649b commit 810e27a

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/utils.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,16 @@ function searchAndProcessCache(moduleName, processor) {
3434
let mod_src = require.resolve(moduleName);
3535
const visitedModules = [];
3636
if (mod_src && ((mod_src = require.cache[mod_src]) !== undefined)) {
37-
(function traverse(mod) {
37+
const modStack = [mod_src];
38+
39+
while (!_.isEmpty(modStack)) {
40+
const mod = modStack.pop();
3841
if (!_.includes(visitedModules, mod)) {
3942
visitedModules.push(mod);
40-
_.forEach(mod.children, function (child) {
41-
traverse(child);
42-
});
43+
Array.prototype.push.apply(modStack, mod.children);
4344
processor(mod);
4445
}
45-
}(mod_src));
46+
}
4647
}
4748
return BbPromise.resolve();
4849
}

0 commit comments

Comments
 (0)