Commit 4067a646 authored by Derrick Stolee's avatar Derrick Stolee Committed by Junio C Hamano

commit-reach: fix memory and flag leaks

The can_all_from_reach_with_flag() method uses 'assign_flag' as a
value we can use to mark objects temporarily during our commit walk.
The intent is that these flags are removed from all objects before
returning. However, this is not the case.

The 'from' array could also contain objects that are not commits, and
we mark those objects with 'assign_flag'. Add a loop to the 'cleanup'
section that removes these markers.

Also, we forgot to free() the memory for 'list', so add that to the
'cleanup' section.
Signed-off-by: Derrick Stolee's avatarDerrick Stolee <dstolee@microsoft.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent b67f6b26
......@@ -626,6 +626,11 @@ int can_all_from_reach_with_flag(struct object_array *from,
clear_commit_marks(list[i], RESULT);
clear_commit_marks(list[i], assign_flag);
}
free(list);
for (i = 0; i < from->nr; i++)
from->objects[i].item->flags &= ~assign_flag;
return result;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment