diff --git a/search.c b/search.c index 759af5f..53ab8f0 100644 --- a/search.c +++ b/search.c @@ -217,6 +217,7 @@ void search_match_exec(struct menu_q *menuq, struct menu_q *resultq, char *search) { struct menu *mi, *mj; + int r; TAILQ_INIT(resultq); @@ -225,10 +226,11 @@ search_match_exec(struct menu_q *menuq, struct menu_q *resultq, char *search) fnmatch(search, mi->text, 0) == FNM_NOMATCH) continue; TAILQ_FOREACH(mj, resultq, resultentry) { - if (strcasecmp(mi->text, mj->text) < 0) { + r = strcasecmp(mi->text, mj->text); + if (r < 0) TAILQ_INSERT_BEFORE(mj, mi, resultentry); + if (r <= 0) break; - } } if (mj == NULL) TAILQ_INSERT_TAIL(resultq, mi, resultentry);