From 2071e41e645a842cedd058812f2b6df79b55c261 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 19 Jan 2017 10:08:27 +0100 Subject: [PATCH] Don't try to get the global of an object while it's being destroyed. Fixes #15070. Fixes #15097. --- Cargo.lock | 2 +- components/script/dom/bindings/callback.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a89c2e1d3c6..196a7a553c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1257,7 +1257,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.3" -source = "git+https://github.com/servo/rust-mozjs#568eccb62c8b139450d74bb8ed34e464ada715b2" +source = "git+https://github.com/servo/rust-mozjs#71acb0c504abbbc9c396bd78c71af4ec4ea91c88" dependencies = [ "cmake 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs index c246e11592b..c54eaade013 100644 --- a/components/script/dom/bindings/callback.rs +++ b/components/script/dom/bindings/callback.rs @@ -15,6 +15,7 @@ use js::jsapi::{JSCompartment, JS_EnterCompartment, JS_LeaveCompartment, RemoveR use js::jsapi::JSAutoCompartment; use js::jsapi::JS_GetProperty; use js::jsval::{JSVal, UndefinedValue, ObjectValue}; +use js::rust::Runtime; use std::default::Default; use std::ffi::CString; use std::mem::drop; @@ -88,7 +89,7 @@ impl Drop for CallbackObject { #[allow(unsafe_code)] fn drop(&mut self) { unsafe { - let cx = GlobalScope::from_object(self.callback.get()).get_cx(); + let cx = Runtime::get(); RemoveRawValueRoot(cx, self.permanent_js_root.get_unsafe()); } }