Make {get,ensure}_expando_object unsafe.

They trust the caller-provided raw pointers to be valid.
This commit is contained in:
Ms2ger 2017-02-07 11:44:38 +01:00
parent bd431039b9
commit b57abc19da

View file

@ -159,8 +159,7 @@ pub unsafe extern "C" fn get_prototype_if_ordinary(_: *mut JSContext,
}
/// Get the expando object, or null if there is none.
pub fn get_expando_object(obj: HandleObject, expando: MutableHandleObject) {
unsafe {
pub unsafe fn get_expando_object(obj: HandleObject, expando: MutableHandleObject) {
assert!(is_dom_proxy(obj.get()));
let val = GetProxyExtra(obj.get(), JSPROXYSLOT_EXPANDO);
expando.set(if val.is_undefined() {
@ -169,12 +168,10 @@ pub fn get_expando_object(obj: HandleObject, expando: MutableHandleObject) {
val.to_object()
});
}
}
/// Get the expando object, or create it if it doesn't exist yet.
/// Fails on JSAPI failure.
pub fn ensure_expando_object(cx: *mut JSContext, obj: HandleObject, expando: MutableHandleObject) {
unsafe {
pub unsafe fn ensure_expando_object(cx: *mut JSContext, obj: HandleObject, expando: MutableHandleObject) {
assert!(is_dom_proxy(obj.get()));
get_expando_object(obj, expando);
if expando.is_null() {
@ -184,7 +181,6 @@ pub fn ensure_expando_object(cx: *mut JSContext, obj: HandleObject, expando: Mut
SetProxyExtra(obj.get(), JSPROXYSLOT_EXPANDO, &ObjectValue(expando.get()));
}
}
}
/// Set the property descriptor's object to `obj` and set it to enumerable,
/// and writable if `readonly` is true.