diff options
author | Josh Matthews <josh@joshmatthews.net> | 2019-08-30 17:29:10 -0700 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2019-08-30 17:29:10 -0700 |
commit | 421001ae1a3b8f3251db1aad20eca3e1fb942f78 (patch) | |
tree | e0cecf1340d6d8262a2fc6ba00ff05252170d3f4 /components/script/script_runtime.rs | |
parent | 51222397b0899477b60dfb68a479fe9b98897dbf (diff) | |
download | servo-421001ae1a3b8f3251db1aad20eca3e1fb942f78.tar.gz servo-421001ae1a3b8f3251db1aad20eca3e1fb942f78.zip |
Work around crash on Windows when returning JS::Value by value.
Diffstat (limited to 'components/script/script_runtime.rs')
-rw-r--r-- | components/script/script_runtime.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/components/script/script_runtime.rs b/components/script/script_runtime.rs index 02175fffbfc..305dd7d25b5 100644 --- a/components/script/script_runtime.rs +++ b/components/script/script_runtime.rs @@ -37,8 +37,9 @@ use js::jsapi::{ }; use js::jsapi::{JSObject, PromiseRejectionHandlingState, SetPreserveWrapperCallback}; use js::jsapi::{SetJobQueue, SetProcessBuildIdOp, SetPromiseRejectionTrackerCallback}; +use js::jsval::UndefinedValue; use js::panic::wrap_panic; -use js::rust::wrappers::{GetPromiseIsHandled, GetPromiseResult}; +use js::rust::wrappers::{GetPromiseIsHandled, JS_GetPromiseResult}; use js::rust::Handle; use js::rust::IntoHandle; use js::rust::JSEngine; @@ -251,7 +252,8 @@ unsafe extern "C" fn promise_rejection_tracker( let cx = target.global().get_cx(); let root_promise = trusted_promise.root(); - rooted!(in(*cx) let reason = GetPromiseResult(root_promise.reflector().get_jsobject())); + rooted!(in(*cx) let mut reason = UndefinedValue()); + JS_GetPromiseResult(root_promise.reflector().get_jsobject(), reason.handle_mut()); let event = PromiseRejectionEvent::new( &target.global(), @@ -314,7 +316,8 @@ pub fn notify_about_rejected_promises(global: &GlobalScope) { } // Step 4-2. - rooted!(in(*cx) let reason = GetPromiseResult(promise.reflector().get_jsobject())); + rooted!(in(*cx) let mut reason = UndefinedValue()); + JS_GetPromiseResult(promise.reflector().get_jsobject(), reason.handle_mut()); let event = PromiseRejectionEvent::new( &target.global(), |