diff options
-rw-r--r-- | components/layout/wrapper.rs | 4 | ||||
-rw-r--r-- | components/script/dom/characterdata.rs | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index e7ace898d01..c39482c1de6 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -189,7 +189,7 @@ impl<'ln> TLayoutNode for LayoutNode<'ln> { unsafe { if self.get().is_text() { let text: JS<Text> = self.get_jsmanaged().transmute_copy(); - (*text.unsafe_get()).characterdata().data().clone() + (*text.unsafe_get()).characterdata().data_for_layout().to_string() } else if self.get().is_htmlinputelement() { let input: JS<HTMLInputElement> = self.get_jsmanaged().transmute_copy(); input.get_value_for_layout() @@ -765,7 +765,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { Some(TextNodeTypeId) => { unsafe { let text: JS<Text> = self.get_jsmanaged().transmute_copy(); - if !is_whitespace((*text.unsafe_get()).characterdata().data().as_slice()) { + if !is_whitespace((*text.unsafe_get()).characterdata().data_for_layout()) { return false } diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 8201965bdb3..753a4336849 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -15,6 +15,7 @@ use dom::node::{CommentNodeTypeId, Node, NodeTypeId, TextNodeTypeId, ProcessingI use servo_util::str::DOMString; use std::cell::{Ref, RefCell}; +use std::mem; #[jstraceable] #[must_root] @@ -57,6 +58,12 @@ impl CharacterData { pub fn set_data(&self, data: DOMString) { *self.data.borrow_mut() = data; } + + #[inline] + pub unsafe fn data_for_layout<'a>(&'a self) -> &'a str { + mem::transmute::<&RefCell<DOMString>, &DOMString>(&self.data).as_slice() + } + } impl<'a> CharacterDataMethods for JSRef<'a, CharacterData> { |