aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-09-05 09:54:40 +0200
committerMs2ger <Ms2ger@gmail.com>2016-09-05 09:54:40 +0200
commit5ae29b02b652cf34fce9c813c241c395ca7dd823 (patch)
treea25a5b2b7fa2fe533a1fd1e1ea97cdad91662d2e /components/script
parentc46003eb05cca0ea779fee73d0f6325c85e19357 (diff)
downloadservo-5ae29b02b652cf34fce9c813c241c395ca7dd823.tar.gz
servo-5ae29b02b652cf34fce9c813c241c395ca7dd823.zip
Stop using mem::transmute_copy.
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/bindings/js.rs10
-rw-r--r--components/script/layout_wrapper.rs5
2 files changed, 10 insertions, 5 deletions
diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs
index 6a0dfd83dea..a7ecc975129 100644
--- a/components/script/dom/bindings/js.rs
+++ b/components/script/dom/bindings/js.rs
@@ -126,7 +126,10 @@ impl<T: Castable> LayoutJS<T> {
T: DerivedFrom<U>
{
debug_assert!(thread_state::get().is_layout());
- unsafe { mem::transmute_copy(self) }
+ let ptr: *const T = *self.ptr;
+ LayoutJS {
+ ptr: unsafe { NonZero::new(ptr as *const U) },
+ }
}
/// Cast a DOM object downwards to one of the interfaces it might implement.
@@ -136,7 +139,10 @@ impl<T: Castable> LayoutJS<T> {
debug_assert!(thread_state::get().is_layout());
unsafe {
if (*self.unsafe_get()).is::<U>() {
- Some(mem::transmute_copy(self))
+ let ptr: *const T = *self.ptr;
+ Some(LayoutJS {
+ ptr: NonZero::new(ptr as *const U),
+ })
} else {
None
}
diff --git a/components/script/layout_wrapper.rs b/components/script/layout_wrapper.rs
index a7f0a5019f3..2f4ee4995ef 100644
--- a/components/script/layout_wrapper.rs
+++ b/components/script/layout_wrapper.rs
@@ -51,7 +51,7 @@ use selectors::matching::ElementFlags;
use selectors::parser::{AttrSelector, NamespaceConstraint};
use std::fmt;
use std::marker::PhantomData;
-use std::mem::{transmute, transmute_copy};
+use std::mem::transmute;
use std::sync::Arc;
use string_cache::{Atom, Namespace};
use style::attr::AttrValue;
@@ -119,8 +119,7 @@ impl<'ln> TNode for ServoLayoutNode<'ln> {
fn to_unsafe(&self) -> UnsafeNode {
unsafe {
- let ptr: usize = transmute_copy(self);
- (ptr, 0)
+ (self.node.unsafe_get() as usize, 0)
}
}