aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/layout/flow.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/layout/flow.rs')
-rw-r--r--src/components/layout/flow.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/components/layout/flow.rs b/src/components/layout/flow.rs
index 27091eb7665..74346633d36 100644
--- a/src/components/layout/flow.rs
+++ b/src/components/layout/flow.rs
@@ -57,6 +57,7 @@ use std::mem;
use std::num::Zero;
use std::fmt;
use std::iter::Zip;
+use std::raw;
use std::sync::atomics::{AtomicUint, Relaxed, SeqCst};
use std::slice::MutItems;
use style::computed_values::{clear, position, text_align};
@@ -274,8 +275,8 @@ pub trait Flow: fmt::Show + ToString + Share {
#[inline(always)]
pub fn base<'a>(this: &'a Flow) -> &'a BaseFlow {
unsafe {
- let (_, ptr): (uint, &BaseFlow) = mem::transmute(this);
- ptr
+ let obj = mem::transmute::<&'a Flow, raw::TraitObject>(this);
+ mem::transmute::<*mut (), &'a BaseFlow>(obj.data)
}
}
@@ -287,8 +288,8 @@ pub fn imm_child_iter<'a>(flow: &'a Flow) -> FlowListIterator<'a> {
#[inline(always)]
pub fn mut_base<'a>(this: &'a mut Flow) -> &'a mut BaseFlow {
unsafe {
- let (_, ptr): (uint, &mut BaseFlow) = mem::transmute(this);
- ptr
+ let obj = mem::transmute::<&'a mut Flow, raw::TraitObject>(this);
+ mem::transmute::<*mut (), &'a mut BaseFlow>(obj.data)
}
}