diff options
author | fvogel <fvogelnew1@free.fr> | 2018-10-16 21:16:47 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2018-10-16 21:16:47 (GMT) |
commit | 3da23be2cedeef3e4349ee110f183ed9dca40486 (patch) | |
tree | b4efe2e31f9b3fc58d27102a28cee10f0ac5a0de | |
parent | 2eb57cb5163bee4eeb2eaf045701d75d740523c7 (diff) | |
download | tk-3da23be2cedeef3e4349ee110f183ed9dca40486.zip tk-3da23be2cedeef3e4349ee110f183ed9dca40486.tar.gz tk-3da23be2cedeef3e4349ee110f183ed9dca40486.tar.bz2 |
Fix backwards search, thanks to Koen Danckaert
-rw-r--r-- | generic/tkText.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/generic/tkText.c b/generic/tkText.c index 6e09ce6..4c536a2 100644 --- a/generic/tkText.c +++ b/generic/tkText.c @@ -5823,7 +5823,7 @@ SearchCore( firstOffset = 0; } - if (alreadySearchOffset != -1) { + if (alreadySearchOffset >= 0) { if (searchSpecPtr->backwards) { if (alreadySearchOffset < lastOffset) { lastOffset = alreadySearchOffset; @@ -5912,17 +5912,17 @@ SearchCore( * match. */ - const char c = pattern[0]; + const char c = matchLength ? pattern[0] : '\0'; - if (alreadySearchOffset != -1) { + if (alreadySearchOffset >= 0) { p = startOfLine + alreadySearchOffset; alreadySearchOffset = -1; } else { p = startOfLine + lastOffset -1; } while (p >= startOfLine + firstOffset) { - if (p[0] == c && !strncmp(p, pattern, - (size_t) matchLength)) { + if (matchLength == 0 || (p[0] == c && !strncmp( + p, pattern, (size_t) matchLength))) { goto backwardsMatch; } p--; @@ -6085,7 +6085,10 @@ SearchCore( if (firstNewLine != -1) { break; } else { - alreadySearchOffset -= matchLength; + alreadySearchOffset -= (matchLength ? matchLength : 1); + if (alreadySearchOffset < 0) { + break; + } } } else { firstOffset = matchLength ? p - startOfLine + matchLength |