diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2019-01-09 12:56:42 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-01-09 15:56:42 -0500 |
commit | d835c84ba9e21cf91c71ff8db2104218e37f168a (patch) | |
tree | a8f806fdbc1304188539007678fe5192ec578317 /libdeno/libdeno_test.cc | |
parent | 3634488caa8aff97b585d165917f03ffa583f749 (diff) |
Prevent segfault when eval throws an error (#1411)
Diffstat (limited to 'libdeno/libdeno_test.cc')
-rw-r--r-- | libdeno/libdeno_test.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libdeno/libdeno_test.cc b/libdeno/libdeno_test.cc index 6ee8979ee..5a4a93077 100644 --- a/libdeno/libdeno_test.cc +++ b/libdeno/libdeno_test.cc @@ -236,6 +236,21 @@ TEST(LibDenoTest, LastException) { deno_delete(d); } +TEST(LibDenoTest, EncodeErrorBug) { + Deno* d = deno_new(deno_config{0, empty, empty, nullptr, nullptr}); + EXPECT_EQ(deno_last_exception(d), nullptr); + EXPECT_FALSE(deno_execute(d, nullptr, "a.js", "eval('a')")); + EXPECT_STREQ(deno_last_exception(d), + "{\"message\":\"ReferenceError: a is not defined\"," + "\"frames\":[{\"line\":1,\"column\":1," + "\"functionName\":\"\",\"scriptName\":\"<unknown>\"," + "\"isEval\":true," + "\"isConstructor\":false,\"isWasm\":false},{\"line\":1," + "\"column\":1,\"functionName\":\"\",\"scriptName\":\"a.js\"," + "\"isEval\":false,\"isConstructor\":false,\"isWasm\":false}]}"); + deno_delete(d); +} + TEST(LibDenoTest, Shared) { uint8_t s[] = {0, 1, 2}; deno_buf shared = {nullptr, 0, s, 3}; |