workaround v8 heisenbug (#4453)

This commit is contained in:
Alex Lam S.L
2020-12-25 13:14:36 +08:00
committed by GitHub
parent b2f27fd873
commit bb45f48ab7

View File

@@ -64,7 +64,7 @@ function createContext() {
} }
} }
exports.run_code = function(code, toplevel, timeout) { function run_code(code, toplevel, timeout) {
timeout = timeout || 5000; timeout = timeout || 5000;
var stdout = ""; var stdout = "";
var original_write = process.stdout.write; var original_write = process.stdout.write;
@@ -79,7 +79,17 @@ exports.run_code = function(code, toplevel, timeout) {
} finally { } finally {
process.stdout.write = original_write; process.stdout.write = original_write;
} }
}; }
exports.run_code = semver.satisfies(process.version, "0.8") ? function(code, toplevel, timeout) {
var stdout = run_code(code, toplevel, timeout);
if (typeof stdout != "string" || !/arguments/.test(code)) return stdout;
do {
var prev = stdout;
stdout = run_code(code, toplevel, timeout);
} while (prev !== stdout);
return stdout;
} : run_code;
function strip_func_ids(text) { function strip_func_ids(text) {
return ("" + text).replace(/F[0-9]{6}N/g, "<F<>N>"); return ("" + text).replace(/F[0-9]{6}N/g, "<F<>N>");