Fix bug in detecting text in MenuSearch A bug sneaked into my implementation of Boyer-Moore-Horspool. This lead to not finding certain patterns. Given the text 'abcdde' and the pattern 'dd', the faulty implementation would not find 'dd': 1. 'ab' does not match, skip 2 (length of pattern) 2. 'cd' does not match, skip 2 (length of pattern) <- the bug. 3. 'de' does not match, end of string The bug in step 2 is to not use 'd' to detect how far to skip but to use 'c' (which is not in the skip-table) and thus 2 bytes are skipped).
Mathias Gumz akira@fluxbox.org
1 files changed,
1 insertions(+),
1 deletions(-)
jump to
M
src/FbTk/MenuSearch.cc
→
src/FbTk/MenuSearch.cc
@@ -75,7 +75,7 @@ if (p == 0) {
return t+p; } } - t += skip[std::tolower(text[t+p])]; + t += skip[std::tolower(text[t+plast])]; } return std::string::npos;