aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/bindings/refcounted.rs3
-rw-r--r--components/script/dom/bindings/root.rs6
-rw-r--r--components/script/dom/bindings/weakref.rs4
3 files changed, 7 insertions, 6 deletions
diff --git a/components/script/dom/bindings/refcounted.rs b/components/script/dom/bindings/refcounted.rs
index 02f6784fb2f..795847a8f5a 100644
--- a/components/script/dom/bindings/refcounted.rs
+++ b/components/script/dom/bindings/refcounted.rs
@@ -22,7 +22,6 @@
//! its hash table during the next GC. During GC, the entries of the hash table are counted
//! as JS roots.
-use core::nonzero::NonZero;
use dom::bindings::conversions::ToJSValConvertible;
use dom::bindings::error::Error;
use dom::bindings::reflector::{DomObject, Reflector};
@@ -185,7 +184,7 @@ impl<T: DomObject> Trusted<T> {
self.owner_thread == (&*live_references) as *const _ as *const libc::c_void
}));
unsafe {
- DomRoot::new(NonZero::new_unchecked(self.refcount.0 as *const T))
+ DomRoot::from_ref(&*(self.refcount.0 as *const T))
}
}
}
diff --git a/components/script/dom/bindings/root.rs b/components/script/dom/bindings/root.rs
index 1a81965fef9..3a6a3521132 100644
--- a/components/script/dom/bindings/root.rs
+++ b/components/script/dom/bindings/root.rs
@@ -591,11 +591,11 @@ impl<T: DomObject> DomRoot<T> {
/// Create a new stack-bounded root for the provided JS-owned value.
/// It cannot outlive its associated `RootCollection`, and it gives
/// out references which cannot outlive this new `Root`.
- pub fn new(unrooted: NonZero<*const T>) -> DomRoot<T> {
+ pub unsafe fn new(unrooted: NonZero<*const T>) -> DomRoot<T> {
debug_assert!(thread_state::get().is_script());
STACK_ROOTS.with(|ref collection| {
let RootCollectionPtr(collection) = collection.get().unwrap();
- unsafe { (*collection).root(&*(*unrooted.get()).reflector()) }
+ (*collection).root(&*(*unrooted.get()).reflector())
DomRoot {
ptr: unrooted,
root_list: collection,
@@ -605,7 +605,7 @@ impl<T: DomObject> DomRoot<T> {
/// Generate a new root from a reference
pub fn from_ref(unrooted: &T) -> DomRoot<T> {
- DomRoot::new(unsafe { NonZero::new_unchecked(unrooted) })
+ unsafe { DomRoot::new(NonZero::new_unchecked(unrooted)) }
}
}
diff --git a/components/script/dom/bindings/weakref.rs b/components/script/dom/bindings/weakref.rs
index 6ece47cea3b..885fa62cdc1 100644
--- a/components/script/dom/bindings/weakref.rs
+++ b/components/script/dom/bindings/weakref.rs
@@ -86,7 +86,9 @@ impl<T: WeakReferenceable> WeakRef<T> {
/// DomRoot a weak reference. Returns `None` if the object was already collected.
pub fn root(&self) -> Option<DomRoot<T>> {
- unsafe { &*self.ptr.get() }.value.get().map(DomRoot::new)
+ unsafe { &*self.ptr.get() }.value.get().map(|ptr| unsafe {
+ DomRoot::from_ref(&*ptr.get())
+ })
}
/// Return whether the weakly-referenced object is still alive.