mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 21:59:07 +00:00
LibWeb: Correct logic for removing end nodes from HTMLOptionsCollection
This test case would previously crash. Found with domato.
This commit is contained in:
parent
f61e54b10c
commit
0cec68ea99
Notes:
github-actions[bot]
2024-07-27 19:24:14 +00:00
Author: https://github.com/AtkinsSJ
Commit: 0cec68ea99
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/865
Reviewed-by: https://github.com/tcl3 ✅
3 changed files with 17 additions and 2 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
0
|
||||||
|
1
|
||||||
|
0
|
12
Tests/LibWeb/Text/input/DOM/HTMLSelectElement-length.html
Normal file
12
Tests/LibWeb/Text/input/DOM/HTMLSelectElement-length.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<script src="../include.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const select = document.createElement("select");
|
||||||
|
const option = document.createElement("option");
|
||||||
|
println(select.length);
|
||||||
|
select.add(option);
|
||||||
|
println(select.length);
|
||||||
|
select.length = 0;
|
||||||
|
println(select.length);
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -66,8 +66,8 @@ WebIDL::ExceptionOr<void> HTMLOptionsCollection::set_length(WebIDL::UnsignedLong
|
||||||
auto n = current - value;
|
auto n = current - value;
|
||||||
|
|
||||||
// 3.2. Remove the last n nodes in the collection from their parent nodes.
|
// 3.2. Remove the last n nodes in the collection from their parent nodes.
|
||||||
for (WebIDL::UnsignedLong i = current - 1; i >= current - n; i--)
|
for (auto i = 0u; i < n; i++)
|
||||||
this->item(i)->remove();
|
item(length() - 1)->remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue