From 2952ccfae2e4883efc4886988dcf17d07d89f66c Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 18 Mar 2017 15:41:50 +0100 Subject: [PATCH] Fix another deadlock --- components/script/dom/cssrulelist.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs index bc77361b5ae..1f1573a05d5 100644 --- a/components/script/dom/cssrulelist.rs +++ b/components/script/dom/cssrulelist.rs @@ -90,9 +90,12 @@ impl CSSRuleList { let index = idx as usize; let parent_stylesheet = self.parent_stylesheet.style_stylesheet(); - let mut guard = parent_stylesheet.shared_lock.write(); - let new_rule = css_rules.write_with(&mut guard) - .insert_rule(rule, parent_stylesheet, index, nested)?; + let new_rule = { + let mut guard = parent_stylesheet.shared_lock.write(); + css_rules.write_with(&mut guard).insert_rule(rule, parent_stylesheet, index, nested)? + // Drop `guard` here, + // CSSRule::new_specific re-acquires the lock for @support and @media. + }; let parent_stylesheet = &*self.parent_stylesheet; let dom_rule = CSSRule::new_specific(&window, parent_stylesheet, new_rule);