aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/node.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-07-10 16:40:41 +0200
committerMs2ger <ms2ger@gmail.com>2014-07-10 16:45:41 +0200
commit439bc78cabe2ef23748000b1eb9f345c9206524e (patch)
tree35f69907dffd2e4bae1aa9a8566bb07de0c4391c /src/components/script/dom/node.rs
parent360d5d01d86ec15fdfd8e3da62b2c39e731fa0d3 (diff)
downloadservo-439bc78cabe2ef23748000b1eb9f345c9206524e.tar.gz
servo-439bc78cabe2ef23748000b1eb9f345c9206524e.zip
Return a Temporary from *Binding::Wrap.
Returning a JS<T> is GC-unsafe. This commit also includes some cleanup around Node and Document reflection.
Diffstat (limited to 'src/components/script/dom/node.rs')
-rw-r--r--src/components/script/dom/node.rs9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs
index 9892f0b5f27..aacaa9bbedb 100644
--- a/src/components/script/dom/node.rs
+++ b/src/components/script/dom/node.rs
@@ -907,13 +907,10 @@ impl Node {
pub fn reflect_node<N: Reflectable+NodeBase>
(node: Box<N>,
document: &JSRef<Document>,
- wrap_fn: extern "Rust" fn(*mut JSContext, &JSRef<Window>, Box<N>) -> JS<N>)
+ wrap_fn: extern "Rust" fn(*mut JSContext, &JSRef<Window>, Box<N>) -> Temporary<N>)
-> Temporary<N> {
- assert!(node.reflector().get_jsobject().is_null());
- let window = document.deref().window.root();
- let node = reflect_dom_object(node, &window.root_ref(), wrap_fn).root();
- assert!(node.deref().reflector().get_jsobject().is_not_null());
- Temporary::from_rooted(&*node)
+ let window = document.window.root();
+ reflect_dom_object(node, &*window, wrap_fn)
}
pub fn new_inherited(type_id: NodeTypeId, doc: &JSRef<Document>) -> Node {