Index: Source/core/editing/iterators/CharacterIterator.cpp |
diff --git a/Source/core/editing/iterators/CharacterIterator.cpp b/Source/core/editing/iterators/CharacterIterator.cpp |
index 9d5e55558487e6d80b2dc1c8336af2fcf4b2af37..87b26095c342440cdd5d4fcff826672ee3d537e0 100644 |
--- a/Source/core/editing/iterators/CharacterIterator.cpp |
+++ b/Source/core/editing/iterators/CharacterIterator.cpp |
@@ -475,7 +475,11 @@ inline bool SearchBuffer::isWordStartMatch(size_t start, size_t length) const |
size_t wordBreakSearchStart = start + length; |
while (wordBreakSearchStart > start) |
wordBreakSearchStart = findNextWordFromIndex(m_buffer.data(), m_buffer.size(), wordBreakSearchStart, false /* backwards */); |
- return wordBreakSearchStart == start; |
+ if (wordBreakSearchStart != start) |
+ return false; |
+ if (m_options & WholeWord) |
+ return static_cast<int>(start + length) == findWordEndBoundary(m_buffer.data(), m_buffer.size(), wordBreakSearchStart); |
+ return true; |
} |
inline size_t SearchBuffer::search(size_t& start) |