aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2014-09-17 18:17:19 +0530
committerManish Goregaokar <manishsmail@gmail.com>2014-09-17 18:17:19 +0530
commit11ba79894a13ddaee4bfcdd64d23fd4b54a041f3 (patch)
tree5eac047b9fdc394ff30ce52a6dd888f164c6b629 /components/script/dom/element.rs
parentaa935c7b027bf00bf1f6756b0f5e1f4d0866c964 (diff)
parentf5087e149004e0080a61a2a31d76a5c52ee357e1 (diff)
downloadservo-11ba79894a13ddaee4bfcdd64d23fd4b54a041f3.tar.gz
servo-11ba79894a13ddaee4bfcdd64d23fd4b54a041f3.zip
Merge pull request #3374 from Manishearth/lint_unrooted_jsmanaged
Add lint for ensuring proper rooting of JS<T>; r=jdm
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r--components/script/dom/element.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index b0aad2f9bbf..953036788f4 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -42,6 +42,7 @@ use std::cell::{Cell, RefCell};
use std::mem;
#[deriving(Encodable)]
+#[must_root]
pub struct Element {
pub node: Node,
pub local_name: Atom,
@@ -160,8 +161,8 @@ impl Element {
}
pub fn new(local_name: DOMString, namespace: Namespace, prefix: Option<DOMString>, document: &JSRef<Document>) -> Temporary<Element> {
- let element = Element::new_inherited(ElementTypeId, local_name, namespace, prefix, document);
- Node::reflect_node(box element, document, ElementBinding::Wrap)
+ Node::reflect_node(box Element::new_inherited(ElementTypeId, local_name, namespace, prefix, document),
+ document, ElementBinding::Wrap)
}
}
@@ -173,6 +174,7 @@ pub trait RawLayoutElementHelpers {
impl RawLayoutElementHelpers for Element {
#[inline]
+ #[allow(unrooted_must_root)]
unsafe fn get_attr_val_for_layout(&self, namespace: &Namespace, name: &str)
-> Option<&'static str> {
// cast to point to T in RefCell<T> directly
@@ -188,6 +190,7 @@ impl RawLayoutElementHelpers for Element {
}
#[inline]
+ #[allow(unrooted_must_root)]
unsafe fn get_attr_atom_for_layout(&self, namespace: &Namespace, name: &str)
-> Option<Atom> {
// cast to point to T in RefCell<T> directly
@@ -203,6 +206,7 @@ impl RawLayoutElementHelpers for Element {
}
#[inline]
+ #[allow(unrooted_must_root)]
unsafe fn has_class_for_layout(&self, name: &str) -> bool {
let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs);
(*attrs).iter().find(|attr: & &JS<Attr>| {
@@ -220,6 +224,7 @@ pub trait LayoutElementHelpers {
}
impl LayoutElementHelpers for JS<Element> {
+ #[allow(unrooted_must_root)]
unsafe fn html_element_in_html_document_for_layout(&self) -> bool {
if (*self.unsafe_get()).namespace != namespace::HTML {
return false