aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2014-10-31 10:24:37 -0700
committerPatrick Walton <pcwalton@mimiga.net>2014-10-31 10:24:49 -0700
commitb245a2475f89f01c0e52780213903904b4e8513f (patch)
tree78f6702d53df2f93b5578361f8f328d48452bf2c /components/script/dom/node.rs
parenta94e13f8886211b2ead8d52b3cfe43cd0c8ff998 (diff)
downloadservo-b245a2475f89f01c0e52780213903904b4e8513f.tar.gz
servo-b245a2475f89f01c0e52780213903904b4e8513f.zip
script: Fix busted document fragment appending code
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index ba423715def..d3dad1049c4 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1381,18 +1381,20 @@ impl Node {
// Step 4.
// Step 5: DocumentFragment, mutation records.
// Step 6: DocumentFragment.
- for c in node.children() {
- Node::remove(c, node, Suppressed);
+ let mut kids = Vec::new();
+ for kid in node.children() {
+ kids.push(kid.clone());
+ Node::remove(kid, node, Suppressed);
}
// Step 7: mutation records.
// Step 8.
- for node in node.children() {
- do_insert(node, parent, child);
+ for kid in kids.iter() {
+ do_insert((*kid).clone(), parent, child);
}
- for node in node.children() {
- fire_observer_if_necessary(node, suppress_observers);
+ for kid in kids.into_iter() {
+ fire_observer_if_necessary(kid, suppress_observers);
}
}
_ => {