diff --git a/config.c b/config.c index afeb762..df3cd33 100644 --- a/config.c +++ b/config.c @@ -135,3 +135,21 @@ load_config(const config_setting_t *config_root, FullConfig *config) config->channels = load_channels_section(channel_config); return true; } + +void +reset_config(FullConfig *config) +{ + if (!config) { + return; + } + if (config->nodes.items) { + free(config->nodes.items); + config->nodes.items = NULL; + config->nodes.length = 0; + } + if (config->channels.items) { + free(config->channels.items); + config->channels.items = NULL; + config->channels.length = 0; + } +} diff --git a/config.h b/config.h index 07f1597..8e026c7 100644 --- a/config.h +++ b/config.h @@ -33,5 +33,6 @@ typedef struct { } FullConfig; bool load_config(const config_setting_t *config_root, FullConfig *config); +void reset_config(FullConfig *config); #endif /* end of include guard: CONFIG_H_ */ diff --git a/main.c b/main.c index 914a1db..00cd458 100644 --- a/main.c +++ b/main.c @@ -85,6 +85,7 @@ main(int argc, char ** argv) free(channels); free(nodes); + reset_config(&loaded_config); config_destroy(&config_tree); io_subscription_list_deinit(&state.wait_output);