diff options
author | 2022-03-27 23:48:22 -0700 | |
---|---|---|
committer | 2022-03-27 23:48:22 -0700 | |
commit | 7a97f62c72dc04e011cc646707ab2b894fade477 (patch) | |
tree | 66956be26ea09f37a8b284d94eeac75bf193ee8b | |
parent | 8bbcb5006ebf77a7944472eb2e4a0604f7bbc733 (diff) | |
download | bun-7a97f62c72dc04e011cc646707ab2b894fade477.tar.gz bun-7a97f62c72dc04e011cc646707ab2b894fade477.tar.zst bun-7a97f62c72dc04e011cc646707ab2b894fade477.zip |
Safer error handling
-rw-r--r-- | src/javascript/jsc/bindings/bindings.cpp | 28 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/webcore/DOMIsoSubspaces.h | 4 |
2 files changed, 19 insertions, 13 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; diff --git a/src/javascript/jsc/bindings/webcore/DOMIsoSubspaces.h b/src/javascript/jsc/bindings/webcore/DOMIsoSubspaces.h index dd1a665a4..36564a926 100644 --- a/src/javascript/jsc/bindings/webcore/DOMIsoSubspaces.h +++ b/src/javascript/jsc/bindings/webcore/DOMIsoSubspaces.h @@ -866,8 +866,8 @@ public: std::unique_ptr<IsoSubspace> m_subspaceForURLSearchParamsIterator; std::unique_ptr<IsoSubspace> m_subspaceForDOMException; - std::unique_ptr<IsoSubspace> m_subspaceForDOMFormData; - std::unique_ptr<IsoSubspace> m_subspaceForDOMFormDataIterator; + // std::unique_ptr<IsoSubspace> m_subspaceForDOMFormData; + // std::unique_ptr<IsoSubspace> m_subspaceForDOMFormDataIterator; std::unique_ptr<IsoSubspace> m_subspaceForDOMURL; }; } // namespace WebCore |