summaryrefslogtreecommitdiff
path: root/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2017-11-29 20:55:43 +0100
committerAnna Henningsen <anna@addaleax.net>2017-12-05 23:49:36 +0100
commitb73e66e94918aa89643b982cd3164100d02ec997 (patch)
treee23a4188d6330d7ea7bd34e9c04689c6f032cc5c /test/parallel/test-vm-parse-abort-on-uncaught-exception.js
parentaeddc3676bc9afe940106d34f30523f27b4cb44f (diff)
downloadandroid-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.tar.gz
android-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.tar.bz2
android-node-v8-b73e66e94918aa89643b982cd3164100d02ec997.zip
vm: never abort on caught syntax error
Keep track of C++ `TryCatch` state to avoid aborting when an exception is thrown inside one, and re-throw in JS to make sure the exception is being picked up a second time by a second uncaught exception handler, if necessary. Add a bit of a hack to `AppendExceptionLine` to avoid overriding the line responsible for re-throwing the exception. PR-URL: https://github.com/nodejs/node/pull/17394 Fixes: https://github.com/nodejs/node/issues/13258 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel/test-vm-parse-abort-on-uncaught-exception.js')
-rw-r--r--test/parallel/test-vm-parse-abort-on-uncaught-exception.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/parallel/test-vm-parse-abort-on-uncaught-exception.js b/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
new file mode 100644
index 0000000000..36f73ea676
--- /dev/null
+++ b/test/parallel/test-vm-parse-abort-on-uncaught-exception.js
@@ -0,0 +1,14 @@
+// Flags: --abort-on-uncaught-exception
+'use strict';
+require('../common');
+const vm = require('vm');
+
+// Regression test for https://github.com/nodejs/node/issues/13258
+
+try {
+ new vm.Script({ toString() { throw new Error('foo'); } }, {});
+} catch (err) {}
+
+try {
+ new vm.Script('[', {});
+} catch (err) {}