Index: third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp |
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp |
index 05d972bdb04912e73c99c2ba3d4bf4f502aa48c6..fda3d8289bfbf7a2b9e8d79c052c995c42fe76a2 100644 |
--- a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp |
+++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp |
@@ -99,10 +99,10 @@ static EphemeralRange expandEndToSentenceBoundary(const EphemeralRange& range) |
const VisiblePosition& visibleEnd = createVisiblePosition(range.endPosition()); |
DCHECK(visibleEnd.isNotNull()); |
const Position& sentenceEnd = endOfSentence(visibleEnd).deepEquivalent(); |
- // TODO(xiaochengh): |sentenceEnd < range.startPosition()| seems possible, |
- // which would trigger a DCHECK in EphemeralRange's constructor. Need more |
- // investigation, and if that is really the case, fix it. |
- return EphemeralRange(range.startPosition(), sentenceEnd.isNotNull() ? sentenceEnd : range.endPosition()); |
+ // TODO(xiaochengh): |sentenceEnd < range.endPosition()| is possible, |
+ // which would trigger a DCHECK in EphemeralRange's constructor if we return |
+ // it directly. However, this shouldn't happen and needs to be fixed. |
+ return EphemeralRange(range.startPosition(), sentenceEnd.isNotNull() && sentenceEnd > range.endPosition() ? sentenceEnd : range.endPosition()); |
} |
static EphemeralRange expandRangeToSentenceBoundary(const EphemeralRange& range) |
@@ -111,10 +111,10 @@ static EphemeralRange expandRangeToSentenceBoundary(const EphemeralRange& range) |
const VisiblePosition& visibleStart = createVisiblePosition(range.startPosition()); |
DCHECK(visibleStart.isNotNull()); |
const Position& sentenceStart = startOfSentence(visibleStart).deepEquivalent(); |
- const VisiblePosition& visibleEnd = createVisiblePosition(range.endPosition()); |
- DCHECK(visibleStart.isNotNull()); |
- const Position& sentenceEnd = endOfSentence(visibleEnd).deepEquivalent(); |
- return EphemeralRange(sentenceStart.isNull() ? range.startPosition() : sentenceStart, sentenceEnd.isNull() ? range.endPosition() : sentenceEnd); |
+ // TODO(xiaochengh): |sentenceStart > range.startPosition()| is possible, |
+ // which would trigger a DCHECK in EphemeralRange's constructor if we return |
+ // it directly. However, this shouldn't happen and needs to be fixed. |
+ return expandEndToSentenceBoundary(EphemeralRange(sentenceStart.isNotNull() && sentenceStart < range.startPosition() ? sentenceStart : range.startPosition(), range.endPosition())); |
} |
} // namespace |