Xinqi Bao's Git
projects
/
dmenu.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
fix incorrect ordering of match results
[dmenu.git]
/
dmenu.c
diff --git
a/dmenu.c
b/dmenu.c
index
509e566
..
c9fb38b
100644
(file)
--- a/
dmenu.c
+++ b/
dmenu.c
@@
-208,7
+208,7
@@
match(void)
char buf[sizeof text], *s;
int i, tokc = 0;
char buf[sizeof text], *s;
int i, tokc = 0;
- size_t len;
+ size_t len
, textsize
;
struct item *item, *lprefix, *lsubstr, *prefixend, *substrend;
strcpy(buf, text);
struct item *item, *lprefix, *lsubstr, *prefixend, *substrend;
strcpy(buf, text);
@@
-219,6
+219,7
@@
match(void)
len = tokc ? strlen(tokv[0]) : 0;
matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL;
len = tokc ? strlen(tokv[0]) : 0;
matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL;
+ textsize = strlen(text) + 1;
for (item = items; item && item->text; item++) {
for (i = 0; i < tokc; i++)
if (!fstrstr(item->text, tokv[i]))
for (item = items; item && item->text; item++) {
for (i = 0; i < tokc; i++)
if (!fstrstr(item->text, tokv[i]))
@@
-226,7
+227,7
@@
match(void)
if (i != tokc) /* not all tokens match */
continue;
/* exact matches go first, then prefixes, then substrings */
if (i != tokc) /* not all tokens match */
continue;
/* exact matches go first, then prefixes, then substrings */
- if (!tokc || !fstrncmp(t
okv[0], item->text, len + 1
))
+ if (!tokc || !fstrncmp(t
ext, item->text, textsize
))
appenditem(item, &matches, &matchend);
else if (!fstrncmp(tokv[0], item->text, len))
appenditem(item, &lprefix, &prefixend);
appenditem(item, &matches, &matchend);
else if (!fstrncmp(tokv[0], item->text, len))
appenditem(item, &lprefix, &prefixend);