all repos — fluxbox @ 533c9a2aa57cf3fd2967b2a72016322902584986

custom fork of the fluxbox windowmanager

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
commit

533c9a2aa57cf3fd2967b2a72016322902584986

parent

e117f5acd6e531b6f77c41cab894d11560050e5c

1 files changed, 1 insertions(+), 1 deletions(-)

jump to
M src/FbTk/MenuSearch.ccsrc/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;