mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
wt-status.c: don't leak directory entries when processing untracked,ignored
When iterating through the list of directory entries, searching for untracked entries, only the entries added to the string_list were free'd. The rest (tracked or not matching the pathspec) were leaked. Ditto for the "ignored" loop. Rearrange the loops so that all entries are free'd. Signed-off-by: Brandon Casey <drafnel@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d212cef936
commit
b822423ed2
16
wt-status.c
16
wt-status.c
@ -390,11 +390,9 @@ static void wt_status_collect_untracked(struct wt_status *s)
|
||||
fill_directory(&dir, s->pathspec);
|
||||
for (i = 0; i < dir.nr; i++) {
|
||||
struct dir_entry *ent = dir.entries[i];
|
||||
if (!cache_name_is_other(ent->name, ent->len))
|
||||
continue;
|
||||
if (!match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
continue;
|
||||
string_list_insert(&s->untracked, ent->name);
|
||||
if (cache_name_is_other(ent->name, ent->len) &&
|
||||
match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
string_list_insert(&s->untracked, ent->name);
|
||||
free(ent);
|
||||
}
|
||||
|
||||
@ -404,11 +402,9 @@ static void wt_status_collect_untracked(struct wt_status *s)
|
||||
fill_directory(&dir, s->pathspec);
|
||||
for (i = 0; i < dir.nr; i++) {
|
||||
struct dir_entry *ent = dir.entries[i];
|
||||
if (!cache_name_is_other(ent->name, ent->len))
|
||||
continue;
|
||||
if (!match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
continue;
|
||||
string_list_insert(&s->ignored, ent->name);
|
||||
if (cache_name_is_other(ent->name, ent->len) &&
|
||||
match_pathspec(s->pathspec, ent->name, ent->len, 0, NULL))
|
||||
string_list_insert(&s->ignored, ent->name);
|
||||
free(ent);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user