Skip to content

Commit

Permalink
path-list.c: always free strdup'ed paths
Browse files Browse the repository at this point in the history
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 <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
René Scharfe authored and Junio C Hamano committed Aug 15, 2007
1 parent 6ed7726 commit 79d7222
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
14 changes: 8 additions & 6 deletions path-list.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion path-list.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down

0 comments on commit 79d7222

Please sign in to comment.