From 95a49863c72cc11ba41608e8a1216becc5dad75c Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Tue, 15 Nov 2016 23:33:34 -0800 Subject: [PATCH] Prevent nodes from having DIRTY_DESCENDANTS set by default. --- components/script/dom/node.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index dbe32a167b8..17765218b54 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -167,7 +167,7 @@ bitflags! { impl NodeFlags { pub fn new() -> NodeFlags { - IS_DIRTY | HAS_DIRTY_DESCENDANTS + IS_DIRTY } } @@ -243,6 +243,8 @@ impl Node { let parent_in_doc = self.is_in_doc(); for node in new_child.traverse_preorder() { node.set_flag(IS_IN_DOC, parent_in_doc); + // Out-of-document elements never have the descendants flag set. + debug_assert!(!node.get_flag(HAS_DIRTY_DESCENDANTS)); vtable_for(&&*node).bind_to_tree(parent_in_doc); } let document = new_child.owner_doc(); @@ -281,7 +283,8 @@ impl Node { self.children_count.set(self.children_count.get() - 1); for node in child.traverse_preorder() { - node.set_flag(IS_IN_DOC, false); + // Out-of-document elements never have the descendants flag set. + node.set_flag(IS_IN_DOC | HAS_DIRTY_DESCENDANTS, false); vtable_for(&&*node).unbind_from_tree(&context); node.style_and_layout_data.get().map(|d| node.dispose(d)); }