mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-03 15:16:14 +00:00
LibJS+LibWeb: Remove NonnullGCPtr<T>::operator=(GCPtr<T>) footgun
GCPtr can be null so it's not safe to assign it to a NonnullGCPtr unless you know it to be non-null. This exposed a number of wrong uses in LibWeb which had to be fixed as part of this change.
This commit is contained in:
@@ -84,7 +84,7 @@ JS::ThrowCompletionOr<JS::GCPtr<Node>> NodeIterator::traverse(Direction directio
|
||||
auto* next_node = m_traversal_pointer->node->next_in_pre_order(m_root.ptr());
|
||||
if (!next_node)
|
||||
return nullptr;
|
||||
m_traversal_pointer->node = next_node;
|
||||
m_traversal_pointer->node = *next_node;
|
||||
} else {
|
||||
// If beforeNode is true, then set it to false.
|
||||
m_traversal_pointer->is_before_node = false;
|
||||
@@ -99,7 +99,7 @@ JS::ThrowCompletionOr<JS::GCPtr<Node>> NodeIterator::traverse(Direction directio
|
||||
auto* previous_node = m_traversal_pointer->node->previous_in_pre_order();
|
||||
if (!previous_node)
|
||||
return nullptr;
|
||||
m_traversal_pointer->node = previous_node;
|
||||
m_traversal_pointer->node = *previous_node;
|
||||
} else {
|
||||
// If beforeNode is false, then set it to true.
|
||||
m_traversal_pointer->is_before_node = true;
|
||||
@@ -194,7 +194,7 @@ void NodeIterator::run_pre_removing_steps_with_node_pointer(Node& to_be_removed_
|
||||
while (node && node->is_descendant_of(to_be_removed_node))
|
||||
node = node->next_in_pre_order(root());
|
||||
if (node)
|
||||
pointer.node = node;
|
||||
pointer.node = *node;
|
||||
return;
|
||||
}
|
||||
if (auto* node = to_be_removed_node.previous_in_pre_order()) {
|
||||
@@ -218,7 +218,7 @@ void NodeIterator::run_pre_removing_steps_with_node_pointer(Node& to_be_removed_
|
||||
node = node->previous_in_pre_order();
|
||||
}
|
||||
if (node)
|
||||
pointer.node = node;
|
||||
pointer.node = *node;
|
||||
return;
|
||||
}
|
||||
auto* node = to_be_removed_node.next_in_pre_order(root());
|
||||
@@ -227,7 +227,7 @@ void NodeIterator::run_pre_removing_steps_with_node_pointer(Node& to_be_removed_
|
||||
node = node->previous_in_pre_order();
|
||||
}
|
||||
if (node)
|
||||
pointer.node = node;
|
||||
pointer.node = *node;
|
||||
}
|
||||
|
||||
// https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps
|
||||
|
||||
Reference in New Issue
Block a user