From 0dc6c32759c9e8284fb6b34ad16ba243d18c7ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 23 Dec 2020 02:59:11 +0000 Subject: [PATCH] style: Make next_in_preorder generate slightly better code. This avoids the panic code in release builds. Differential Revision: https://phabricator.services.mozilla.com/D100094 --- components/style/dom.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/components/style/dom.rs b/components/style/dom.rs index 2edf5ae7dab..86c5a382891 100644 --- a/components/style/dom.rs +++ b/components/style/dom.rs @@ -188,22 +188,18 @@ pub trait TNode: Sized + Copy + Clone + Debug + NodeInfo + PartialEq { return Some(c); } - if Some(*self) == scoped_to { - return None; - } - - let mut current = *self; + let mut current = Some(*self); loop { - if let Some(s) = current.next_sibling() { - return Some(s); - } - - let parent = current.parent_node(); - if parent == scoped_to { + if current == scoped_to { return None; } - current = parent.expect("Not a descendant of the scope?"); + debug_assert!(current.is_some(), "not a descendant of the scope?"); + if let Some(s) = current?.next_sibling() { + return Some(s); + } + + current = current?.parent_node(); } }