diff --git a/src/main.c b/src/main.c index 134d0c96cae3a2e2b86d4ef9fbf92a2652441442..7d8c768a4dcc09285fa480c1606e371d5d7296cf 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ #include "commands.h" #include "utils.h" -static void release_argv(int argc, char** argv); +static void release_argv(int argc, char*** argv); int main() { @@ -34,19 +34,20 @@ int main() fprintf(stderr, "%s: command not found\n", argv[0]); } release_and_continue: - release_argv(argc, argv); + release_argv(argc, &argv); continue; release_and_exit: - release_argv(argc, argv); + release_argv(argc, &argv); break; } return 0; } -static void release_argv(int argc, char** argv) { +static void release_argv(int argc, char*** argv) { for (int i = 0; i < argc; ++i) { - free(argv[i]); + free((*argv)[i]); } - free(argv); + free(*argv); + *argv = NULL; } diff --git a/tests/src/command_parsing_test.cc b/tests/src/command_parsing_test.cc index e7f06016900d4ee2940f1c2ae6b07955d5b9f411..6f943a1174cb34cb5c9d178ce0cd808123e2e857 100644 --- a/tests/src/command_parsing_test.cc +++ b/tests/src/command_parsing_test.cc @@ -98,5 +98,5 @@ static void free_string_array(char*** argv, int num_str) { free(*argv); - argv = NULL; + *argv = NULL; }