Fix step 14.2 of Range::ExtractContents

We need the last inclusive ancestor of start node that is not an inclusive ancestor
of end node, not the first that is an inclusive ancestor of it.
This commit is contained in:
Anthony Ramine 2016-02-29 00:19:18 +01:00
parent be6940db59
commit c0d79062b5
2 changed files with 3 additions and 19 deletions

View file

@ -564,8 +564,9 @@ impl RangeMethods for Range {
} else {
// Step 14.1-2.
let reference_node = start_node.ancestors()
.find(|n| n.is_inclusive_ancestor_of(end_node.r()))
.unwrap();
.take_while(|n| !n.is_inclusive_ancestor_of(&end_node))
.last()
.unwrap_or(Root::from_ref(&start_node));
// Step 14.3.
(reference_node.GetParentNode().unwrap(), reference_node.index() + 1)
};