Auto merge of #11654 - nox:error, r=Ms2ger

Make report_pending_exception unsafe

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11654)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-06-07 07:07:03 -05:00
commit 6be0494287
3 changed files with 12 additions and 8 deletions

View file

@ -121,12 +121,10 @@ pub unsafe fn throw_dom_exception(cx: *mut JSContext, global: GlobalRef, result:
}
/// Report a pending exception, thereby clearing it.
pub fn report_pending_exception(cx: *mut JSContext, obj: *mut JSObject) {
unsafe {
if JS_IsExceptionPending(cx) {
let _ac = JSAutoCompartment::new(cx, obj);
JS_ReportPendingException(cx);
}
pub unsafe fn report_pending_exception(cx: *mut JSContext, obj: *mut JSObject) {
if JS_IsExceptionPending(cx) {
let _ac = JSAutoCompartment::new(cx, obj);
JS_ReportPendingException(cx);
}
}

View file

@ -425,7 +425,9 @@ impl EventTarget {
};
if !rv || handler.ptr.is_null() {
// Step 1.8.2
report_pending_exception(cx, self.reflector().get_jsobject().get());
unsafe {
report_pending_exception(cx, self.reflector().get_jsobject().get());
}
// Step 1.8.1 / 1.8.3
return None;
}

View file

@ -416,6 +416,7 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope {
impl WorkerGlobalScope {
#[allow(unsafe_code)]
pub fn execute_script(&self, source: DOMString) {
let mut rval = RootedValue::new(self.runtime.cx(), UndefinedValue());
match self.runtime.evaluate_script(
@ -428,7 +429,10 @@ impl WorkerGlobalScope {
// TODO: An error needs to be dispatched to the parent.
// https://github.com/servo/servo/issues/6422
println!("evaluate_script failed");
report_pending_exception(self.runtime.cx(), self.reflector().get_jsobject().get());
unsafe {
report_pending_exception(
self.runtime.cx(), self.reflector().get_jsobject().get());
}
}
}
}