mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
Don't crash when offset parent querying an element not in the document
This commit is contained in:
parent
66235837e7
commit
18793af44d
1 changed files with 4 additions and 5 deletions
|
@ -845,12 +845,11 @@ pub fn process_offset_parent_query<N: LayoutNode>(requested_node: N, layout_root
|
||||||
-> OffsetParentResponse {
|
-> OffsetParentResponse {
|
||||||
let mut iterator = ParentOffsetBorderBoxIterator::new(requested_node.opaque());
|
let mut iterator = ParentOffsetBorderBoxIterator::new(requested_node.opaque());
|
||||||
sequential::iterate_through_flow_tree_fragment_border_boxes(layout_root, &mut iterator);
|
sequential::iterate_through_flow_tree_fragment_border_boxes(layout_root, &mut iterator);
|
||||||
// If we didn't find the node, something went wrong. Unwrap it.
|
|
||||||
let node_offset_box = iterator.node_offset_box.unwrap();
|
|
||||||
|
|
||||||
|
let node_offset_box = iterator.node_offset_box;
|
||||||
let parent_info_index = iterator.parent_nodes.iter().rposition(|info| info.is_some());
|
let parent_info_index = iterator.parent_nodes.iter().rposition(|info| info.is_some());
|
||||||
match parent_info_index {
|
match (node_offset_box, parent_info_index) {
|
||||||
Some(parent_info_index) => {
|
(Some(node_offset_box), Some(parent_info_index)) => {
|
||||||
let parent = iterator.parent_nodes[parent_info_index].as_ref().unwrap();
|
let parent = iterator.parent_nodes[parent_info_index].as_ref().unwrap();
|
||||||
let origin = node_offset_box.offset - parent.border_box.origin;
|
let origin = node_offset_box.offset - parent.border_box.origin;
|
||||||
let size = node_offset_box.rectangle.size;
|
let size = node_offset_box.rectangle.size;
|
||||||
|
@ -859,7 +858,7 @@ pub fn process_offset_parent_query<N: LayoutNode>(requested_node: N, layout_root
|
||||||
rect: Rect::new(origin, size),
|
rect: Rect::new(origin, size),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => {
|
_ => {
|
||||||
OffsetParentResponse::empty()
|
OffsetParentResponse::empty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue