diff options
Diffstat (limited to 'src/Document.cxx')
| -rw-r--r-- | src/Document.cxx | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/src/Document.cxx b/src/Document.cxx index d427d636d..dca0ccc51 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -1461,13 +1461,16 @@ long Document::FindText(int minPos, int maxPos, const char *search,  		}  		if (caseSensitive) {  			const int endSearch = (startPos <= endPos) ? endPos - lengthFind + 1 : endPos; +			const char charStartSearch =  search[0];  			while (forward ? (pos < endSearch) : (pos >= endSearch)) { -				bool found = (pos + lengthFind) <= limitPos; -				for (int indexSearch = 0; (indexSearch < lengthFind) && found; indexSearch++) { -					found = CharAt(pos + indexSearch) == search[indexSearch]; -				} -				if (found && MatchesWordOptions(word, wordStart, pos, lengthFind)) { -					return pos; +				if (CharAt(pos) == charStartSearch) { +					bool found = (pos + lengthFind) <= limitPos; +					for (int indexSearch = 1; (indexSearch < lengthFind) && found; indexSearch++) { +						found = CharAt(pos + indexSearch) == search[indexSearch]; +					} +					if (found && MatchesWordOptions(word, wordStart, pos, lengthFind)) { +						return pos; +					}  				}  				if (!NextCharacter(pos, increment))  					break; | 
