diff options
author | Ms2ger <Ms2ger@gmail.com> | 2017-02-07 11:44:38 +0100 |
---|---|---|
committer | Ms2ger <Ms2ger@gmail.com> | 2017-02-07 11:44:38 +0100 |
commit | b57abc19da1424cb050011a2a1dbdaa1b0359952 (patch) | |
tree | fa41d979fc3ce5f9b1e3b2cc2bf4e3d59c3b4503 /components/script | |
parent | bd431039b9e459075a496b9faa4f8a90b513140c (diff) | |
download | servo-b57abc19da1424cb050011a2a1dbdaa1b0359952.tar.gz servo-b57abc19da1424cb050011a2a1dbdaa1b0359952.zip |
Make {get,ensure}_expando_object unsafe.
They trust the caller-provided raw pointers to be valid.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/bindings/proxyhandler.rs | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/components/script/dom/bindings/proxyhandler.rs b/components/script/dom/bindings/proxyhandler.rs index d7155b34909..67c68927c9f 100644 --- a/components/script/dom/bindings/proxyhandler.rs +++ b/components/script/dom/bindings/proxyhandler.rs @@ -159,30 +159,26 @@ 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 { - assert!(is_dom_proxy(obj.get())); - let val = GetProxyExtra(obj.get(), JSPROXYSLOT_EXPANDO); - expando.set(if val.is_undefined() { - ptr::null_mut() - } else { - val.to_object() - }); - } +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() { + ptr::null_mut() + } else { + 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 { - assert!(is_dom_proxy(obj.get())); - get_expando_object(obj, expando); - if expando.is_null() { - expando.set(JS_NewObjectWithGivenProto(cx, ptr::null_mut(), HandleObject::null())); - assert!(!expando.is_null()); - - SetProxyExtra(obj.get(), JSPROXYSLOT_EXPANDO, &ObjectValue(expando.get())); - } +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() { + expando.set(JS_NewObjectWithGivenProto(cx, ptr::null_mut(), HandleObject::null())); + assert!(!expando.is_null()); + + SetProxyExtra(obj.get(), JSPROXYSLOT_EXPANDO, &ObjectValue(expando.get())); } } |