[PATCH][RESEND] path-list.c: always free strdup'ed paths
From: René Scharfe <hidden>
Date: 2016-06-15 22:43:29
Subsystem:
the rest · Maintainer:
Linus Torvalds
Always free .paths if .strdup_paths is set, no matter if the parameter free_items is set or not, plugging a minor memory leak. And to clarify the meaning of the flag, rename it to free_util, since it now only affects the freeing of the .util field. Signed-off-by: Rene Scharfe <redacted> --- path-list.c | 14 ++++++++------ path-list.h | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/path-list.c b/path-list.c
index dcb4b3a..3d83b7b 100644
--- a/path-list.c
+++ b/path-list.c@@ -76,16 +76,18 @@ struct path_list_item *path_list_lookup(const char *path, struct path_list *list return list->items + i; } -void path_list_clear(struct path_list *list, int free_items) +void path_list_clear(struct path_list *list, int free_util) { if (list->items) { int i; - if (free_items) - for (i = 0; i < list->nr; i++) { - if (list->strdup_paths) - free(list->items[i].path); + if (list->strdup_paths) { + for (i = 0; i < list->nr; i++) + free(list->items[i].path); + } + if (free_util) { + for (i = 0; i < list->nr; i++) free(list->items[i].util); - } + } free(list->items); } list->items = NULL;
diff --git a/path-list.h b/path-list.h
index ce5ffab..5931e2c 100644
--- a/path-list.h
+++ b/path-list.h@@ -15,7 +15,7 @@ struct path_list void print_path_list(const char *text, const struct path_list *p); int path_list_has_path(const struct path_list *list, const char *path); -void path_list_clear(struct path_list *list, int free_items); +void path_list_clear(struct path_list *list, int free_util); struct path_list_item *path_list_insert(const char *path, struct path_list *list); struct path_list_item *path_list_lookup(const char *path, struct path_list *list);