From 37c70609f9188418859ca1c227d79ee493a9ecf8 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Thu, 16 Apr 2020 15:56:09 +0200 Subject: [PATCH] Remove WeakRuleNode::clone MallocSizeOf for RuleTree should not keep around weak references in case someone runs a GC meanwhile. --- components/style/rule_tree/core.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/components/style/rule_tree/core.rs b/components/style/rule_tree/core.rs index 4c96de291c4..226108da9b7 100644 --- a/components/style/rule_tree/core.rs +++ b/components/style/rule_tree/core.rs @@ -71,14 +71,14 @@ impl MallocSizeOf for RuleTree { fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize { let mut n = 0; let mut stack = SmallVec::<[_; 32]>::new(); - stack.push(self.root.downgrade()); + stack.push(self.root.clone()); while let Some(node) = stack.pop() { n += unsafe { ops.malloc_size_of(node.ptr()) }; let children = unsafe { (*node.ptr()).children.read() }; children.shallow_size_of(ops); for c in &*children { - stack.push(c.clone()); + stack.push(c.upgrade()); } } @@ -335,7 +335,6 @@ impl RuleNode { } } -#[derive(Clone)] pub(crate) struct WeakRuleNode { p: ptr::NonNull, }