aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/helper/configuration.c15
-rw-r--r--src/helper/configuration.h2
-rw-r--r--src/openocd.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/helper/configuration.c b/src/helper/configuration.c
index 2a278838..114ad2c6 100644
--- a/src/helper/configuration.c
+++ b/src/helper/configuration.c
@@ -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)
{
diff --git a/src/helper/configuration.h b/src/helper/configuration.h
index 3cbcd41f..cc28efcd 100644
--- a/src/helper/configuration.h
+++ b/src/helper/configuration.h
@@ -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);
diff --git a/src/openocd.c b/src/openocd.c
index 831bd17f..05533aae 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -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)