]> git.armaanb.net Git - dmenu.git/blobdiff - dmenu.c
add sbase-style ecalloc(), calloc: or die
[dmenu.git] / dmenu.c
diff --git a/dmenu.c b/dmenu.c
index 071cbc1c40d039ded3beb20edc7b56612f80b688..1c2e780efc766af060145563efa23c47fbda01ca 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -92,13 +92,13 @@ calcoffsets(void)
 static void
 cleanup(void)
 {
+       size_t i;
+
        XUngrabKey(dpy, AnyKey, AnyModifier, root);
-       drw_clr_free(scheme[SchemeNorm].bg);
-       drw_clr_free(scheme[SchemeNorm].fg);
-       drw_clr_free(scheme[SchemeSel].fg);
-       drw_clr_free(scheme[SchemeSel].bg);
-       drw_clr_free(scheme[SchemeOut].fg);
-       drw_clr_free(scheme[SchemeOut].bg);
+       for (i = 0; i < SchemeLast; i++) {
+               drw_clr_free(scheme[i].bg);
+               drw_clr_free(scheme[i].fg);
+       }
        drw_free(drw);
        XSync(dpy, False);
        XCloseDisplay(dpy);
@@ -208,7 +208,7 @@ match(void)
 
        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);
@@ -219,6 +219,7 @@ match(void)
        len = tokc ? strlen(tokv[0]) : 0;
 
        matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL;
+       textsize = strlen(text);
        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 (!tokc || !fstrncmp(tokv[0], item->text, len + 1))
+               if (!tokc || !fstrncmp(text, item->text, textsize))
                        appenditem(item, &matches, &matchend);
                else if (!fstrncmp(tokv[0], item->text, len))
                        appenditem(item, &lprefix, &prefixend);
@@ -320,6 +321,7 @@ keypress(XKeyEvent *ev)
                                insert(NULL, nextrune(-1) - cursor);
                        break;
                case XK_y: /* paste selection */
+               case XK_Y:
                        XConvertSelection(dpy, (ev->state & ShiftMask) ? clip : XA_PRIMARY,
                                          utf8, utf8, win, CurrentTime);
                        return;