diff --git a/Tests/LibWeb/Text/expected/DOM/Range-deleteContents.txt b/Tests/LibWeb/Text/expected/DOM/Range-deleteContents.txt new file mode 100644 index 00000000000..f238bad6799 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/Range-deleteContents.txt @@ -0,0 +1 @@ +before after diff --git a/Tests/LibWeb/Text/input/DOM/Range-deleteContents.html b/Tests/LibWeb/Text/input/DOM/Range-deleteContents.html new file mode 100644 index 00000000000..d2ff71d2ee6 --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/Range-deleteContents.html @@ -0,0 +1,17 @@ + +before +
+
should
+
be
+
gone
+
+after + + diff --git a/Userland/Libraries/LibWeb/DOM/Range.cpp b/Userland/Libraries/LibWeb/DOM/Range.cpp index 49d49f1c41f..4be85f536ff 100644 --- a/Userland/Libraries/LibWeb/DOM/Range.cpp +++ b/Userland/Libraries/LibWeb/DOM/Range.cpp @@ -1118,7 +1118,7 @@ WebIDL::ExceptionOr Range::delete_contents() // 4. Let nodes to remove be a list of all the nodes that are contained in this, in tree order, omitting any node whose parent is also contained in this. JS::MarkedVector nodes_to_remove(heap()); - for (Node const* node = start_container(); node != end_container()->next_in_pre_order(); node = node->next_in_pre_order()) { + for (Node const* node = start_container(); node != end_container()->next_sibling(); node = node->next_in_pre_order()) { if (contains_node(*node) && (!node->parent_node() || !contains_node(*node->parent_node()))) nodes_to_remove.append(const_cast(node)); }