diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-26 18:48:24 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-26 18:48:24 +0530 |
commit | 389997d5acd3eac976094e238dbe8f3e18be6dd3 (patch) | |
tree | f153888627c09e0018ec650aaae0c248bdd39b9d /src | |
parent | d352dfca1246998fdf30be0be4198ef989fc44c4 (diff) |
main: avoid leaking memory
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 7 | ||||
-rw-r--r-- | src/main.c | 19 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/config.c b/src/config.c index 88f4c84..b268057 100644 --- a/src/config.c +++ b/src/config.c @@ -37,11 +37,16 @@ config_parse(char *content) list_add(array_values, l); list_add(values, wrap_ptr(NULL)); + + free(l); } else { + list_t *l = list_create(sizeof(ptr_wrapper_t)); char *value = trim(strsep(&buffer, "\n")); - list_add(array_values, wrap_ptr(NULL)); + list_add(array_values, l); list_add(values, wrap_ptr(strdup(value))); + + free(l); } key = trim(strsep(&buffer, DELIM)); @@ -135,6 +135,25 @@ main(int argc, char **argv) handle_file(path); } + for (size_t i = 0; i < config->keys->size; i++) { + ptr_wrapper_t *wrapper; + + wrapper = list_get(config->values, i); + if (wrapper->ptr != NULL) + free(wrapper->ptr); + + list_t *l = list_get(config->array_values, i); + for (size_t y = 0; y < l->size; y++) { + wrapper = list_get(l, y); + + if (wrapper->ptr != NULL) + free(wrapper->ptr); + } + } + + list_delete(config->keys); + list_delete(config->values); + list_delete(config->array_values); free(config); return EXIT_SUCCESS; |