shallow: fix leaking members of `struct shallow_info`

We do not free several struct members in `clear_shallow_info()`. Fix
this to plug the resulting leaks.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2024-09-05 12:09:17 +02:00 committed by Junio C Hamano
parent 14c0ea0f6f
commit 16c6fb5a94
2 changed files with 10 additions and 0 deletions

View File

@ -489,6 +489,15 @@ void prepare_shallow_info(struct shallow_info *info, struct oid_array *sa)

void clear_shallow_info(struct shallow_info *info)
{
if (info->used_shallow) {
for (size_t i = 0; i < info->shallow->nr; i++)
free(info->used_shallow[i]);
free(info->used_shallow);
}

free(info->need_reachability_test);
free(info->reachable);
free(info->shallow_ref);
free(info->ours);
free(info->theirs);
}

View File

@ -5,6 +5,7 @@ test_description='push from/to a shallow clone'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh

commit() {