free all allocated items, use %zu for size_t
authorNRK <nrk@disroot.org>
Fri, 25 Mar 2022 21:51:09 +0000 (22:51 +0100)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Fri, 25 Mar 2022 21:53:50 +0000 (22:53 +0100)
`items` itself is not checked for NULL as calling free on NULL is defined to be
a no-op.

dmenu.c

diff --git a/dmenu.c b/dmenu.c
index d989d397bbf9b8ce742689f013128163e8208f44..085dc292631e72778c05c31f4c4840d9ab0b0856 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -104,6 +104,9 @@ cleanup(void)
        XUngrabKey(dpy, AnyKey, AnyModifier, root);
        for (i = 0; i < SchemeLast; i++)
                free(scheme[i]);
+       for (i = 0; items && items[i].text; ++i)
+               free(items[i].text);
+       free(items);
        drw_free(drw);
        XSync(dpy, False);
        XCloseDisplay(dpy);
@@ -239,7 +242,7 @@ match(void)
        /* separate input text into tokens to be matched individually */
        for (s = strtok(buf, " "); s; tokv[tokc - 1] = s, s = strtok(NULL, " "))
                if (++tokc > tokn && !(tokv = realloc(tokv, ++tokn * sizeof *tokv)))
-                       die("cannot realloc %u bytes:", tokn * sizeof *tokv);
+                       die("cannot realloc %zu bytes:", tokn * sizeof *tokv);
        len = tokc ? strlen(tokv[0]) : 0;
 
        matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL;
@@ -553,11 +556,11 @@ readstdin(void)
        for (i = 0; fgets(buf, sizeof buf, stdin); i++) {
                if (i + 1 >= size / sizeof *items)
                        if (!(items = realloc(items, (size += BUFSIZ))))
-                               die("cannot realloc %u bytes:", size);
+                               die("cannot realloc %zu bytes:", size);
                if ((p = strchr(buf, '\n')))
                        *p = '\0';
                if (!(items[i].text = strdup(buf)))
-                       die("cannot strdup %u bytes:", strlen(buf) + 1);
+                       die("cannot strdup %zu bytes:", strlen(buf) + 1);
                items[i].out = 0;
        }
        if (items)