aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/bindings.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-27 23:48:22 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-27 23:48:22 -0700
commit7a97f62c72dc04e011cc646707ab2b894fade477 (patch)
tree66956be26ea09f37a8b284d94eeac75bf193ee8b /src/javascript/jsc/bindings/bindings.cpp
parent8bbcb5006ebf77a7944472eb2e4a0604f7bbc733 (diff)
downloadbun-7a97f62c72dc04e011cc646707ab2b894fade477.tar.gz
bun-7a97f62c72dc04e011cc646707ab2b894fade477.tar.zst
bun-7a97f62c72dc04e011cc646707ab2b894fade477.zip
Safer error handling
Diffstat (limited to 'src/javascript/jsc/bindings/bindings.cpp')
-rw-r--r--src/javascript/jsc/bindings/bindings.cpp28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/javascript/jsc/bindings/bindings.cpp b/src/javascript/jsc/bindings/bindings.cpp
index 24a8c9625..a91f4ff95 100644
--- a/src/javascript/jsc/bindings/bindings.cpp
+++ b/src/javascript/jsc/bindings/bindings.cpp
@@ -2083,7 +2083,7 @@ void exceptionFromString(ZigException* except, JSC::JSValue value, JSC::JSGlobal
// ErrorInstance
if (JSC::JSObject* obj = JSC::jsDynamicCast<JSC::JSObject*>(global->vm(), value)) {
if (obj->hasProperty(global, global->vm().propertyNames->name)) {
- auto name_str = obj->getDirect(global->vm(), global->vm().propertyNames->name).toWTFString(global);
+ auto name_str = obj->getIfPropertyExists(global, global->vm().propertyNames->name).toWTFString(global);
except->name = Zig::toZigString(name_str);
if (name_str == "Error"_s) {
except->code = JSErrorCodeError;
@@ -2104,20 +2104,26 @@ void exceptionFromString(ZigException* except, JSC::JSValue value, JSC::JSGlobal
}
}
- if (obj->hasProperty(global, global->vm().propertyNames->message)) {
- except->message = Zig::toZigString(
- obj->getDirect(global->vm(), global->vm().propertyNames->message).toWTFString(global));
+ if (JSC::JSValue message = obj->getIfPropertyExists(global, global->vm().propertyNames->message)) {
+ if (message) {
+ except->message = Zig::toZigString(
+ message.toWTFString(global));
+ }
}
- if (obj->hasProperty(global, global->vm().propertyNames->sourceURL)) {
- except->stack.frames_ptr[0].source_url = Zig::toZigString(
- obj->getDirect(global->vm(), global->vm().propertyNames->sourceURL).toWTFString(global));
- except->stack.frames_len = 1;
+ if (JSC::JSValue sourceURL = obj->getIfPropertyExists(global, global->vm().propertyNames->sourceURL)) {
+ if (sourceURL) {
+ except->stack.frames_ptr[0].source_url = Zig::toZigString(
+ sourceURL.toWTFString(global));
+ except->stack.frames_len = 1;
+ }
}
- if (obj->hasProperty(global, global->vm().propertyNames->line)) {
- except->stack.frames_ptr[0].position.line = obj->getDirect(global->vm(), global->vm().propertyNames->line).toInt32(global);
- except->stack.frames_len = 1;
+ if (JSC::JSValue line = obj->getIfPropertyExists(global, global->vm().propertyNames->line)) {
+ if (line) {
+ except->stack.frames_ptr[0].position.line = line.toInt32(global);
+ except->stack.frames_len = 1;
+ }
}
return;