Skip to content

Commit

Permalink
Use safe JSContext in compartments
Browse files Browse the repository at this point in the history
  • Loading branch information
marmeladema committed Aug 8, 2019
1 parent ce3778a commit b18fa8b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
7 changes: 4 additions & 3 deletions components/script/compartments.rs
Expand Up @@ -4,7 +4,8 @@

use crate::dom::bindings::reflector::DomObject;
use crate::dom::globalscope::GlobalScope;
use js::jsapi::{GetCurrentRealmOrNull, JSAutoRealm, JSContext};
use crate::script_runtime::JSContext;
use js::jsapi::{GetCurrentRealmOrNull, JSAutoRealm};

pub struct AlreadyInCompartment(());

Expand All @@ -17,9 +18,9 @@ impl AlreadyInCompartment {
AlreadyInCompartment(())
}

pub fn assert_for_cx(cx: *mut JSContext) -> AlreadyInCompartment {
pub fn assert_for_cx(cx: JSContext) -> AlreadyInCompartment {
unsafe {
assert!(!GetCurrentRealmOrNull(cx).is_null());
assert!(!GetCurrentRealmOrNull(*cx).is_null());
}
AlreadyInCompartment(())
}
Expand Down
2 changes: 1 addition & 1 deletion components/script/dom/bindings/codegen/CodegenRust.py
Expand Up @@ -3335,7 +3335,7 @@ def __init__(self, errorResult, arguments, argsPre, returnType,
if "cx" not in argsPre and needsCx:
args.prepend(CGGeneric("cx"))
if nativeMethodName in descriptor.inCompartmentMethods:
args.append(CGGeneric("InCompartment::in_compartment(&AlreadyInCompartment::assert_for_cx(*cx))"))
args.append(CGGeneric("InCompartment::in_compartment(&AlreadyInCompartment::assert_for_cx(cx))"))

# Build up our actual call
self.cgRoot = CGList([], "\n")
Expand Down

0 comments on commit b18fa8b

Please sign in to comment.