From fe5a075766b6801708a2cc8d5e8136f7d56d7d20 Mon Sep 17 00:00:00 2001 From: Domenico Rizzo Date: Sat, 25 Jan 2025 01:42:13 +0100 Subject: [PATCH] [35131] Borrow hazard in Document::broadcast_active_resize_observations (#35168) * removed panic status: added cloned and collect Signed-off-by: Domenico Rizzo * applied fmt Signed-off-by: Domenico Rizzo --------- Signed-off-by: Domenico Rizzo --- components/script/dom/document.rs | 8 +++++--- .../resize-observer/calculate-depth-for-node.html.ini | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index ef158e5c332..d019b498de5 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -3213,12 +3213,14 @@ impl Document { // Breaking potential re-borrow cycle on `resize_observers`: // broadcasting resize observations calls into a JS callback, // which can add new observers. - for observer in self + let iterator: Vec> = self .resize_observers .borrow() .iter() - .map(|obs| DomRoot::from_ref(&**obs)) - { + .cloned() + .map(|obs| DomRoot::from_ref(&*obs)) + .collect(); + for observer in iterator { observer.broadcast_active_resize_observations(&mut shallowest, can_gc); } shallowest diff --git a/tests/wpt/meta/resize-observer/calculate-depth-for-node.html.ini b/tests/wpt/meta/resize-observer/calculate-depth-for-node.html.ini index 5fb84219874..4e3c57f9422 100644 --- a/tests/wpt/meta/resize-observer/calculate-depth-for-node.html.ini +++ b/tests/wpt/meta/resize-observer/calculate-depth-for-node.html.ini @@ -1,4 +1,5 @@ [calculate-depth-for-node.html] - expected: CRASH + expected: ERROR + ["Calculate depth for node" algorithm with Shadow DOM] expected: FAIL