Skip to content

Commit 8619522

Browse files
committed
Merge branch 'ma/ref-filter-leakfix'
Leakfix. * ma/ref-filter-leakfix: ref-filter: fix memory leak in `free_array_item()`
2 parents fff813c + 14d30cd commit 8619522

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

ref-filter.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2142,7 +2142,9 @@ static void free_array_item(struct ref_array_item *item)
21422142
{
21432143
free((char *)item->symref);
21442144
if (item->value) {
2145-
free((char *)item->value->s);
2145+
int i;
2146+
for (i = 0; i < used_atom_cnt; i++)
2147+
free((char *)item->value[i].s);
21462148
free(item->value);
21472149
}
21482150
free(item);
@@ -2153,14 +2155,16 @@ void ref_array_clear(struct ref_array *array)
21532155
{
21542156
int i;
21552157

2156-
for (i = 0; i < used_atom_cnt; i++)
2157-
free((char *)used_atom[i].name);
2158-
FREE_AND_NULL(used_atom);
2159-
used_atom_cnt = 0;
21602158
for (i = 0; i < array->nr; i++)
21612159
free_array_item(array->items[i]);
21622160
FREE_AND_NULL(array->items);
21632161
array->nr = array->alloc = 0;
2162+
2163+
for (i = 0; i < used_atom_cnt; i++)
2164+
free((char *)used_atom[i].name);
2165+
FREE_AND_NULL(used_atom);
2166+
used_atom_cnt = 0;
2167+
21642168
if (ref_to_worktree_map.worktrees) {
21652169
hashmap_free(&(ref_to_worktree_map.map), 1);
21662170
free_worktrees(ref_to_worktree_map.worktrees);

0 commit comments

Comments
 (0)