diff --git a/src/main.c b/src/main.c index 848ab47342d2c8197f8eeeab6f8863750f948900..ed0ad03e2a1a23c35c1d74c4b7721841bd1021ba 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; }