From 650afc9d3e0d351df493e11831b1c072f79e8889 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 12 Sep 2015 17:17:22 +0200 Subject: Fix cloning of Element's attributes No virtual method was invoked when copies of attributes were appended to newly-cloned elements. --- components/script/dom/node.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'components/script/dom/node.rs') diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index ae725d3d856..c9e78200c99 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1768,15 +1768,12 @@ impl Node { let node_elem = ElementCast::to_ref(node).unwrap(); let copy_elem = ElementCast::to_ref(copy.r()).unwrap(); - let window = document.r().window(); - for ref attr in &*node_elem.attrs() { - let attr = attr.root(); - let newattr = - Attr::new(window.r(), - attr.r().local_name().clone(), attr.r().value().clone(), - attr.r().name().clone(), attr.r().namespace().clone(), - attr.r().prefix().clone(), Some(copy_elem)); - copy_elem.attrs_mut().push(JS::from_rooted(&newattr)); + for attr in node_elem.attrs().iter().map(JS::root) { + copy_elem.push_new_attribute(attr.local_name().clone(), + attr.value().clone(), + attr.name().clone(), + attr.namespace().clone(), + attr.prefix().clone()); } }, _ => () -- cgit v1.2.3