From c6b7d3d85433a206ac6acd446863ef60cebfc592 Mon Sep 17 00:00:00 2001
From: spectaclehong <spectaclehong@gmail.com>
Date: Thu, 28 Sep 2017 16:32:58 +0900
Subject: [PATCH] Fix release functions

---
 src/main.c                        | 13 +++++++------
 tests/src/command_parsing_test.cc |  2 +-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/main.c b/src/main.c
index 848ab47..ed0ad03 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 e7f0601..6f943a1 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;
 }
-- 
GitLab