SMOLNET PORTAL home about changes
icheck memory allocations, malloc+memset to calloc - thingmenu - A simple graphical menu launcher for X11.	Err	bitreich.org	70
hgit clone git://bitreich.org/thingmenu	URL:git://bitreich.org/thingmenu	bitreich.org	70
1Log	/scm/thingmenu/log.gph	bitreich.org	70
1Files	/scm/thingmenu/files.gph	bitreich.org	70
1Refs	/scm/thingmenu/refs.gph	bitreich.org	70
1Tags	/scm/thingmenu/tag	bitreich.org	70
1LICENSE	/scm/thingmenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit bcb369a656d09ae2c2bb76d99622afc9ba33474b	/scm/thingmenu/commit/bcb369a656d09ae2c2bb76d99622afc9ba33474b.gph	bitreich.org	70
1parent a98965225be0bdad50d9711bbf0c54ef4d18888a	/scm/thingmenu/commit/a98965225be0bdad50d9711bbf0c54ef4d18888a.gph	bitreich.org	70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org>	URL:mailto:hiltjo@codemadness.org	bitreich.org	70
iDate:   Sat,  8 Dec 2018 13:36:42 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
icheck memory allocations, malloc+memset to calloc	Err	bitreich.org	70
i	Err	bitreich.org	70
i- some consistency for strdup allocations.	Err	bitreich.org	70
i- free allocates strings at exit too.	Err	bitreich.org	70
i	Err	bitreich.org	70
iSigned-off-by: Christoph Lohmann <20h@r-36.net>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M thingmenu.c                         |      33 ++++++++++++++++++-------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 19 insertions(+), 14 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/thingmenu.c b/thingmenu.c	/scm/thingmenu/file/thingmenu.c.gph	bitreich.org	70
i@@ -663,26 +663,28 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                 i++;	Err	bitreich.org	70
i                 cmd = argv[i];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                entries = realloc(entries, sizeof(entries[0])*(++nentries));	Err	bitreich.org	70
i-                entries[nentries-1] = malloc(sizeof(*entries[0]));	Err	bitreich.org	70
i-                memset(entries[nentries-1], 0, sizeof(*entries[0]));	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                entries[nentries-1]->label = strdup(label);	Err	bitreich.org	70
i-                if (entries[nentries-1]->label == NULL)	Err	bitreich.org	70
i+                if (!(entries = realloc(entries, sizeof(entries[0])*(++nentries))))	Err	bitreich.org	70
i+                        die("realloc returned NULL");	Err	bitreich.org	70
i+                if (!(entries[nentries-1] = calloc(1, sizeof(*entries[0]))))	Err	bitreich.org	70
i+                        die("calloc returned NULL");	Err	bitreich.org	70
i+                if (!(entries[nentries-1]->label = strdup(label)))	Err	bitreich.org	70
i                         die("strdup returned NULL\n");	Err	bitreich.org	70
i-                entries[nentries-1]->cmd = strdup(cmd);	Err	bitreich.org	70
i-                if (entries[nentries-1]->cmd == NULL)	Err	bitreich.org	70
i+                if (!(entries[nentries-1]->cmd = strdup(cmd)))	Err	bitreich.org	70
i                         die("strdup returned NULL\n");	Err	bitreich.org	70
i+                entries[nentries-1]->forceexit = False;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         if (nentries < 1)	Err	bitreich.org	70
i                 usage();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (addexit) {	Err	bitreich.org	70
i-                entries = realloc(entries, sizeof(entries[0])*(++nentries));	Err	bitreich.org	70
i-                entries[nentries-1] = malloc(sizeof(*entries[0]));	Err	bitreich.org	70
i-                memset(entries[nentries-1], 0, sizeof(*entries[0]));	Err	bitreich.org	70
i-                entries[nentries-1]->label = strdup("cancel");	Err	bitreich.org	70
i-                entries[nentries-1]->cmd = "exit";	Err	bitreich.org	70
i+                if (!(entries = realloc(entries, sizeof(entries[0])*(++nentries))))	Err	bitreich.org	70
i+                        die("realloc returned NULL");	Err	bitreich.org	70
i+                if (!(entries[nentries-1] = calloc(1, sizeof(*entries[0]))))	Err	bitreich.org	70
i+                        die("calloc returned NULL");	Err	bitreich.org	70
i+                if (!(entries[nentries-1]->label = strdup("cancel")))	Err	bitreich.org	70
i+                        die("strdup returned NULL\n");	Err	bitreich.org	70
i+                if (!(entries[nentries-1]->cmd = strdup("exit")))	Err	bitreich.org	70
i+                        die("strdup returned NULL\n");	Err	bitreich.org	70
i                 entries[nentries-1]->forceexit = True;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -696,8 +698,11 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         cleanup();	Err	bitreich.org	70
i         XCloseDisplay(dpy);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        for (i = 0; i < nentries; i++)	Err	bitreich.org	70
i+        for (i = 0; i < nentries; i++) {	Err	bitreich.org	70
i+                free(entries[i]->label);	Err	bitreich.org	70
i+                free(entries[i]->cmd);	Err	bitreich.org	70
i                 free(entries[i]);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i         free(entries);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/thingmenu/commit/bcb369a656d0...
Content-Typetext/plain; charset=utf-8