diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index 8fecbdbf53a6..5900b912e736 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -685,7 +685,9 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { type Impl = SelectorImpl; fn opaque(&self) -> ::selectors::OpaqueElement { - ::selectors::OpaqueElement::new(self.as_node().opaque().0 as *const ()) + ::selectors::OpaqueElement::new(unsafe { + &*(self.as_node().opaque().0 as *const ()) + }) } fn parent_element(&self) -> Option> { @@ -1258,7 +1260,9 @@ impl<'le> ::selectors::Element for ServoThreadSafeLayoutElement<'le> { type Impl = SelectorImpl; fn opaque(&self) -> ::selectors::OpaqueElement { - ::selectors::OpaqueElement::new(self.as_node().opaque().0 as *const ()) + ::selectors::OpaqueElement::new(unsafe { + &*(self.as_node().opaque().0 as *const ()) + }) } fn parent_element(&self) -> Option { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index af24036efd2d..2101b1e6a7f0 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -2616,8 +2616,11 @@ impl VirtualMethods for Element { impl<'a> SelectorsElement for DomRoot { type Impl = SelectorImpl; + #[allow(unsafe_code)] fn opaque(&self) -> ::selectors::OpaqueElement { - ::selectors::OpaqueElement::new(self.reflector().get_jsobject().get()) + ::selectors::OpaqueElement::new(unsafe { + &*self.reflector().get_jsobject().get() + }) } fn parent_element(&self) -> Option> {