Skip to content

Commit 152a86c

Browse files
Mike Kaufmantargos
Mike Kaufman
authored andcommitted
lib: make isStackOverflowError() engine-agnostic
Assumption that stack overflow exception has name == "RangeError" is v8-specific. Updated logic to dynamically capture error name when capturing error message. PR-URL: #19705 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Tiancheng "Timothy" Gu <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent e44b777 commit 152a86c

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

lib/internal/errors.js

+9-5
Original file line numberDiff line numberDiff line change
@@ -445,25 +445,29 @@ function dnsException(err, syscall, hostname) {
445445
return ex;
446446
}
447447

448-
let MAX_STACK_MESSAGE;
448+
let maxStack_ErrorName;
449+
let maxStack_ErrorMessage;
449450
/**
450-
* Returns true if `err` is a `RangeError` with an engine-specific message.
451+
* Returns true if `err.name` and `err.message` are equal to engine-specific
452+
* values indicating max call stack size has been exceeded.
451453
* "Maximum call stack size exceeded" in V8.
452454
*
453455
* @param {Error} err
454456
* @returns {boolean}
455457
*/
456458
function isStackOverflowError(err) {
457-
if (MAX_STACK_MESSAGE === undefined) {
459+
if (maxStack_ErrorMessage === undefined) {
458460
try {
459461
function overflowStack() { overflowStack(); }
460462
overflowStack();
461463
} catch (err) {
462-
MAX_STACK_MESSAGE = err.message;
464+
maxStack_ErrorMessage = err.message;
465+
maxStack_ErrorName = err.name;
463466
}
464467
}
465468

466-
return err.name === 'RangeError' && err.message === MAX_STACK_MESSAGE;
469+
return err.name === maxStack_ErrorName &&
470+
err.message === maxStack_ErrorMessage;
467471
}
468472

469473
module.exports = exports = {

0 commit comments

Comments
 (0)