helper/configuration: free script_search_dirs and config_file_names 08/4408/2
authorTomas Vanek <vanekt@fbl.cz>
Wed, 14 Feb 2018 21:38:13 +0000 (22:38 +0100)
committerTomas Vanek <vanekt@fbl.cz>
Wed, 7 Mar 2018 23:47:31 +0000 (23:47 +0000)
Although the leak is negligible, the clean heap on exit will ease
valgrind testing.

Change-Id: If43f02fe594c30ceb1bea3259ea3e098d4b2d239
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4408
Tested-by: jenkins
Reviewed-by: Marc Schink <openocd-dev@marcschink.de>
src/helper/configuration.c
src/helper/configuration.h
src/openocd.c

index 2a27883..114ad2c 100644 (file)
@@ -51,6 +51,21 @@ void add_config_command(const char *cfg)
        config_file_names[num_config_files] = NULL;
 }
 
+void free_config(void)
+{
+       while (num_config_files)
+               free(config_file_names[--num_config_files]);
+
+       free(config_file_names);
+       config_file_names = NULL;
+
+       while (num_script_dirs)
+               free(script_search_dirs[--num_script_dirs]);
+
+       free(script_search_dirs);
+       script_search_dirs = NULL;
+}
+
 /* return full path or NULL according to search rules */
 char *find_file(const char *file)
 {
index 3cbcd41..cc28efc 100644 (file)
@@ -32,6 +32,8 @@ void add_config_command(const char *cfg);
 
 void add_script_search_dir(const char *dir);
 
+void free_config(void);
+
 int configuration_output_handler(struct command_context *cmd_ctx,
                const char *line);
 
index 831bd17..05533aa 100644 (file)
@@ -349,6 +349,8 @@ int openocd_main(int argc, char *argv[])
 
        adapter_quit();
 
+       free_config();
+
        if (ERROR_FAIL == ret)
                return EXIT_FAILURE;
        else if (ERROR_OK != ret)