Work around crash on Windows when returning JS::Value by value.

This commit is contained in:
Josh Matthews 2019-08-30 17:29:10 -07:00
parent 51222397b0
commit 421001ae1a
2 changed files with 7 additions and 4 deletions

View file

@ -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(),