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/binding.cc | |
parent | 3634488caa8aff97b585d165917f03ffa583f749 (diff) |
Prevent segfault when eval throws an error (#1411)
Diffstat (limited to 'libdeno/binding.cc')
-rw-r--r-- | libdeno/binding.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libdeno/binding.cc b/libdeno/binding.cc index c3232bae1..ef5d5a226 100644 --- a/libdeno/binding.cc +++ b/libdeno/binding.cc @@ -99,10 +99,13 @@ std::string EncodeExceptionAsJSON(v8::Local<v8::Context> context, CHECK(frame_obj ->Set(context, v8_str("functionName"), frame->GetFunctionName()) .FromJust()); - CHECK(frame_obj - ->Set(context, v8_str("scriptName"), - frame->GetScriptNameOrSourceURL()) - .FromJust()); + // scriptName can be empty in special conditions e.g. eval + auto scriptName = frame->GetScriptNameOrSourceURL(); + if (scriptName.IsEmpty()) { + scriptName = v8_str("<unknown>"); + } + CHECK( + frame_obj->Set(context, v8_str("scriptName"), scriptName).FromJust()); CHECK(frame_obj ->Set(context, v8_str("isEval"), v8::Boolean::New(isolate, frame->IsEval())) |