From 18793af44de90e6e91890dee1249838b3bda8677 Mon Sep 17 00:00:00 2001 From: Permutator Date: Tue, 3 Jan 2017 18:13:42 -0800 Subject: [PATCH] Don't crash when offset parent querying an element not in the document --- components/layout/query.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/components/layout/query.rs b/components/layout/query.rs index 5c7d993e14e..b28260160f9 100644 --- a/components/layout/query.rs +++ b/components/layout/query.rs @@ -845,12 +845,11 @@ pub fn process_offset_parent_query(requested_node: N, layout_root -> OffsetParentResponse { let mut iterator = ParentOffsetBorderBoxIterator::new(requested_node.opaque()); 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()); - match parent_info_index { - Some(parent_info_index) => { + match (node_offset_box, parent_info_index) { + (Some(node_offset_box), Some(parent_info_index)) => { let parent = iterator.parent_nodes[parent_info_index].as_ref().unwrap(); let origin = node_offset_box.offset - parent.border_box.origin; let size = node_offset_box.rectangle.size; @@ -859,7 +858,7 @@ pub fn process_offset_parent_query(requested_node: N, layout_root rect: Rect::new(origin, size), } } - None => { + _ => { OffsetParentResponse::empty() } }