aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/range.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-02-29 05:11:28 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-02-29 05:11:28 +0530
commitdfdeabf57df02cf4b8a878b3b9933a08d156082d (patch)
treeb8843d076f316fe9607acd1820dfac905de573de /components/script/dom/range.rs
parentb3964a89585539082982160f5f4fb4bd05ddac2f (diff)
parentc0d79062b5bb34ee3c28e7c591c2b22d361830b9 (diff)
downloadservo-dfdeabf57df02cf4b8a878b3b9933a08d156082d.tar.gz
servo-dfdeabf57df02cf4b8a878b3b9933a08d156082d.zip
Auto merge of #9799 - nox:range-extractcontents, r=KiChjang
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. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9799) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/range.rs')
-rw-r--r--components/script/dom/range.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs
index 7044746ddf1..235a4dbcc9b 100644
--- a/components/script/dom/range.rs
+++ b/components/script/dom/range.rs
@@ -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)
};