[PATCH 11/11] t5319: UNLEAK() the remaining leaks
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Oct 21, 2021, 03:40 UTC
- Message-ID
- <f1bb8b73ffdb78995dc5653791f9a64adf216e21.1634787555.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1634787555.git.me@ttaylorr.com>
This resolves the remaining leaks uncovered by running t5319 when building with SANITIZE=leak. All of the leaks below are related to allocated memory stored in 'struct rev_info' which is never freed.
We could alternatively implement a function which frees all allocated memory associated with the rev_info struct, but doing this properly is a bigger undertaking than I want to deal with right now.
Instead, let's just UNLEAK() the few ones that are holding up t5319, which enables us to mark that test as TEST_PASSES_SANITIZE_LEAK.
Signed-off-by: Taylor Blau <me@ttaylorr.com> --- builtin/log.c | 1 + builtin/pack-objects.c | 1 + builtin/rev-list.c | 2 ++ pack-bitmap-write.c | 2 ++ t/t5319-multi-pack-index.sh | 1 + 5 files changed, 7 insertions(+)
diff --git a/builtin/log.c b/builtin/log.c index f75d87e8d7..ad6dfacf77 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -757,6 +757,7 @@ int cmd_log(int argc, const char **argv, const char *prefix) opt.revarg_opt = REVARG_COMMITTISH; opt.tweak = log_setup_revisions_tweak; cmd_log_init(argc, argv, prefix, &rev, &opt); + UNLEAK(rev); return cmd_log_walk(&rev); } diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 857be7826f..6128a2e2a5 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -3759,6 +3759,7 @@ static void get_object_list(int ac, const char **av) if (handle_revision_arg(line, &revs, flags, REVARG_CANNOT_BE_FILENAME)) die(_("bad revision '%s'"), line); } + UNLEAK(revs); warn_on_object_refname_ambiguity = save_warning; diff --git a/builtin/rev-list.c b/builtin/rev-list.c index 36cb909eba..df3811e763 100644 --- a/builtin/rev-list.c +++ b/builtin/rev-list.c @@ -549,6 +549,8 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) argc = setup_revisions(argc, argv, &revs, &s_r_opt); + UNLEAK(revs); + memset(&info, 0, sizeof(info)); info.revs = &revs; if (revs.bisect) diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index cab3eaa2ac..742bae4f57 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -234,6 +234,8 @@ static void bitmap_builder_init(struct bitmap_builder *bb, if (prepare_revision_walk(&revs)) die("revision walk setup failed"); + UNLEAK(revs); + while ((commit = get_revision(&revs))) { struct commit_list *p = commit->parents; struct bb_commit *c_ent; diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index a3c72b68f7..9cfc3d6661 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -3,6 +3,7 @@ test_description='multi-pack-indexes' . ./test-lib.sh +TEST_PASSES_SANITIZE_LEAK=true GIT_TEST_MULTI_PACK_INDEX=0 objdir=.git/objects
-- 2.33.0.96.g73915697e6