From 7185af15cf55f331c3f86e2465c93155b1c6059e Mon Sep 17 00:00:00 2001 From: David Maciejak Date: Sat, 4 Mar 2023 11:16:17 +0800 Subject: [PATCH] Use wtokenfree whenever there is wtokensplit Whenever wtokensplit is used to split into argv/argc, it's better to use the built-in function wtokenfree() as a wfree call only on argv is not freeing the memory properly. --- src/main.c | 4 ++-- src/session.c | 4 +--- util/wmgenmenu.c | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 998bbcc5..7bc8bcdb 100644 --- a/src/main.c +++ b/src/main.c @@ -393,7 +393,7 @@ Bool RelaunchWindow(WWindow *wwin) } else if (pid < 0) { werror("cannot fork a new process"); - wfree(argv); + wtokenfree(argv, argc); wfree(command); return False; } else { @@ -405,7 +405,7 @@ Bool RelaunchWindow(WWindow *wwin) /* not actually a shell command */ wAddDeathHandler(pid, shellCommandHandler, data); - wfree(argv); + wtokenfree(argv, argc); } return True; diff --git a/src/session.c b/src/session.c index 417255bb..50c9ec8d 100644 --- a/src/session.c +++ b/src/session.c @@ -392,9 +392,7 @@ static pid_t execCommand(WScreen *scr, char *command) execvp(argv[0], args); exit(111); } - while (argc > 0) - wfree(argv[--argc]); - wfree(argv); + wtokenfree(argv, argc); return pid; } diff --git a/util/wmgenmenu.c b/util/wmgenmenu.c index e1bd11fe..25076499 100644 --- a/util/wmgenmenu.c +++ b/util/wmgenmenu.c @@ -451,7 +451,7 @@ static void find_and_write(const char *group, char *list[][2], int this_is_termi WMAddToPLArray(L2Menu, L3Menu); wfree(t); } - wfree(argv); + wtokenfree(argv, argc); i++; } if (L2Menu)