diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/bindings/refcounted.rs | 3 | ||||
-rw-r--r-- | components/script/dom/bindings/root.rs | 6 | ||||
-rw-r--r-- | components/script/dom/bindings/weakref.rs | 4 |
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. |