LibWeb: Skip select element internal shadow tree update unless it exists

This fixes a crash seen on https://www.gaslightanthem.com/
This commit is contained in:
Andreas Kling 2024-01-15 22:41:24 +01:00 committed by Jelle Raaijmakers
parent 6713ed483b
commit 58b5181364
Notes: sideshowbarker 2024-07-17 07:38:17 +09:00
3 changed files with 16 additions and 0 deletions

View File

@ -0,0 +1,12 @@
<script src="../include.js"></script>
<script>
test(() => {
let select = document.createElement("select");
let option = document.createElement("option");
option.setAttribute("selected", "selected");
option.setAttribute("value", "foo");
select.appendChild(option);
select.value = "foo";
println("PASS"); // Didn't crash
});
</script>

View File

@ -383,6 +383,9 @@ void HTMLSelectElement::create_shadow_tree_if_needed()
void HTMLSelectElement::update_inner_text_element()
{
if (!m_inner_text_element)
return;
// Update inner text element to text content of selected option
for (auto const& option_element : list_of_options()) {
if (option_element->selected()) {