From 6a6ecb9afad5eb4ffa8d384b0545e1802adc64db Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 4 Apr 2015 23:04:27 +0200 Subject: Hold a Temporary in ReverseChildrenIterator --- components/script/dom/node.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'components/script/dom/node.rs') diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 7cd01875b15..e4dcdae5ee4 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -862,7 +862,7 @@ impl<'a> NodeHelpers<'a> for JSRef<'a, Node> { fn rev_children(self) -> ReverseChildrenIterator { ReverseChildrenIterator { - current: self.last_child.get().root(), + current: self.last_child(), } } @@ -1132,16 +1132,19 @@ impl Iterator for NodeChildrenIterator { } pub struct ReverseChildrenIterator { - current: Option>, + current: Option>, } impl Iterator for ReverseChildrenIterator { type Item = Temporary; fn next(&mut self) -> Option> { - let node = self.current.r().map(Temporary::from_rooted); - self.current = self.current.take().and_then(|node| node.r().prev_sibling()).root(); - node + let current = match self.current.take() { + None => return None, + Some(current) => current, + }.root(); + self.current = current.r().prev_sibling(); + Some(Temporary::from_rooted(current.r())) } } -- cgit v1.2.3