aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/devtools.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2016-05-27 15:12:27 +0530
committerManish Goregaokar <manishsmail@gmail.com>2016-05-27 15:12:27 +0530
commit283fc8dd25e32fee83f8a682dd94d34dcb33bf68 (patch)
tree6f1aecbb4901168383a0c443e34d6427c57c4950 /components/script/devtools.rs
parent48257ef282612d69d4bb4f059f7be730678510f4 (diff)
downloadservo-283fc8dd25e32fee83f8a682dd94d34dcb33bf68.tar.gz
servo-283fc8dd25e32fee83f8a682dd94d34dcb33bf68.zip
Use JSautoCompartment in devtools handle_evaluate_js to avoid segfault
fixes #11457
Diffstat (limited to 'components/script/devtools.rs')
-rw-r--r--components/script/devtools.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/components/script/devtools.rs b/components/script/devtools.rs
index e818b0c0ca0..8f783126a62 100644
--- a/components/script/devtools.rs
+++ b/components/script/devtools.rs
@@ -21,7 +21,7 @@ use dom::element::Element;
use dom::node::Node;
use dom::window::Window;
use ipc_channel::ipc::IpcSender;
-use js::jsapi::{ObjectClassName, RootedObject, RootedValue};
+use js::jsapi::{JSAutoCompartment, ObjectClassName, RootedObject, RootedValue};
use js::jsval::UndefinedValue;
use msg::constellation_msg::PipelineId;
use script_thread::get_browsing_context;
@@ -35,6 +35,8 @@ pub fn handle_evaluate_js(global: &GlobalRef, eval: String, reply: IpcSender<Eva
// global.get_cx() returns a valid `JSContext` pointer, so this is safe.
let result = unsafe {
let cx = global.get_cx();
+ let globalhandle = global.reflector().get_jsobject();
+ let _ac = JSAutoCompartment::new(cx, globalhandle.get());
let mut rval = RootedValue::new(cx, UndefinedValue());
global.evaluate_js_on_global_with_result(&eval, rval.handle_mut());