From bb5547a5d05b1f002d9cce3197cfb9cdcb71d33c Mon Sep 17 00:00:00 2001 From: Taym Haddadi Date: Wed, 28 Aug 2024 13:01:21 +0200 Subject: [PATCH] Fix panic in parser-reentrancy-customelement.window.js (#33162) * Try to fix panic in parser-reentrancy-customelement.window.js Signed-off-by: Taym * ./mach fmt Signed-off-by: Taym * Only return with ToTokenizerMsg::End and continue for others Signed-off-by: Taym --------- Signed-off-by: Taym --- components/script/dom/servoparser/async_html.rs | 8 ++++++-- .../mozilla/parser-reentrancy-customelement.window.js.ini | 6 ------ 2 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 tests/wpt/mozilla/meta/mozilla/parser-reentrancy-customelement.window.js.ini diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index ed405c9ca61..551692af1f8 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -318,7 +318,7 @@ impl Tokenizer { let script = self.get_node(&script.id); return TokenizerResult::Script(DomRoot::from_ref(script.downcast().unwrap())); }, - ToTokenizerMsg::End => unreachable!(), + _ => unreachable!(), }; } } @@ -334,8 +334,12 @@ impl Tokenizer { .expect("Unexpected channel panic in main thread.") { ToTokenizerMsg::ProcessOperation(parse_op) => self.process_operation(parse_op), + ToTokenizerMsg::TokenizerResultDone { updated_input: _ } | + ToTokenizerMsg::TokenizerResultScript { + script: _, + updated_input: _, + } => continue, ToTokenizerMsg::End => return, - _ => unreachable!(), }; } } diff --git a/tests/wpt/mozilla/meta/mozilla/parser-reentrancy-customelement.window.js.ini b/tests/wpt/mozilla/meta/mozilla/parser-reentrancy-customelement.window.js.ini deleted file mode 100644 index 68996501463..00000000000 --- a/tests/wpt/mozilla/meta/mozilla/parser-reentrancy-customelement.window.js.ini +++ /dev/null @@ -1,6 +0,0 @@ -[parser-reentrancy-customelement.window.html?default] - prefs: ["dom.servoparser.async_html_tokenizer.enabled:false"] - -[parser-reentrancy-customelement.window.html?async] - expected: CRASH - prefs: ["dom.servoparser.async_html_tokenizer.enabled:true"] \ No newline at end of file