Re: [PATCH v2 17/27] revisions API: have release_revisions() release "mailmap"
From: Junio C Hamano <hidden>
Date: 2022-03-25 01:12:09
Ævar Arnfjörð Bjarmason [off-list ref] writes:
Extend the the release_revisions() function so that it frees the "prune_data" in the "struct ref_info".
Huh? The patch text does make sense but it is all about mailmap as far as I can see.
quoted hunk
diff --git a/builtin/commit.c b/builtin/commit.c index c7eda9bbb72..cd6cebcf8c8 100644 --- a/builtin/commit.c +++ b/builtin/commit.c@@ -1100,7 +1100,6 @@ static const char *find_author_by_nickname(const char *name) struct rev_info revs; struct commit *commit; struct strbuf buf = STRBUF_INIT; - struct string_list mailmap = STRING_LIST_INIT_NODUP; const char *av[20]; int ac = 0;@@ -1111,7 +1110,8 @@ static const char *find_author_by_nickname(const char *name) av[++ac] = buf.buf; av[++ac] = NULL; setup_revisions(ac, av, &revs, NULL); - revs.mailmap = &mailmap; + revs.mailmap = xmalloc(sizeof(struct string_list)); + string_list_init_nodup(revs.mailmap); read_mailmap(revs.mailmap); if (prepare_revision_walk(&revs))@@ -1122,7 +1122,6 @@ static const char *find_author_by_nickname(const char *name) ctx.date_mode.type = DATE_NORMAL; strbuf_release(&buf); format_commit_message(commit, "%aN <%aE>", &buf, &ctx); - clear_mailmap(&mailmap); release_revisions(&revs); return strbuf_detach(&buf, NULL); }diff --git a/revision.c b/revision.c index 13b568aea76..d9e2b171f6d 100644 --- a/revision.c +++ b/revision.c@@ -2933,12 +2933,21 @@ static void release_revisions_commit_list(struct rev_info *revs) revs->commits = NULL; } +static void release_revisions_mailmap(struct string_list *mailmap) +{ + if (!mailmap) + return; + clear_mailmap(mailmap); + free(mailmap); +} + void release_revisions(struct rev_info *revs) { if (!revs) return; release_revisions_commit_list(revs); object_array_clear(&revs->pending); + release_revisions_mailmap(revs->mailmap); } static void add_child(struct rev_info *revs, struct commit *parent, struct commit *child)diff --git a/t/t0056-git-C.sh b/t/t0056-git-C.sh index 2630e756dab..752aa8c9454 100755 --- a/t/t0056-git-C.sh +++ b/t/t0056-git-C.sh@@ -2,6 +2,7 @@ test_description='"-C <path>" option and its effects on other path-related options' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success '"git -C <path>" runs git from the directory <path>' 'diff --git a/t/t3302-notes-index-expensive.sh b/t/t3302-notes-index-expensive.sh index bb5fea02a03..d0c4d38b4d4 100755 --- a/t/t3302-notes-index-expensive.sh +++ b/t/t3302-notes-index-expensive.sh@@ -8,6 +8,7 @@ test_description='Test commit notes index (expensive!)' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh create_repo () {diff --git a/t/t4055-diff-context.sh b/t/t4055-diff-context.sh index 741e0803c1a..73048d0a526 100755 --- a/t/t4055-diff-context.sh +++ b/t/t4055-diff-context.sh@@ -5,6 +5,7 @@ test_description='diff.context configuration' +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'setup' 'diff --git a/t/t4066-diff-emit-delay.sh b/t/t4066-diff-emit-delay.sh index a1de63b77f8..0ecb3915412 100755 --- a/t/t4066-diff-emit-delay.sh +++ b/t/t4066-diff-emit-delay.sh@@ -4,6 +4,7 @@ test_description='test combined/stat/moved interaction' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME +TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh # This test covers a weird 3-way interaction between "--cc -p", which will rundiff --git a/t/t7008-filter-branch-null-sha1.sh b/t/t7008-filter-branch-null-sha1.sh index 9ba9f24ad2f..93fbc92b8db 100755 --- a/t/t7008-filter-branch-null-sha1.sh +++ b/t/t7008-filter-branch-null-sha1.sh@@ -1,6 +1,7 @@ #!/bin/sh test_description='filter-branch removal of trees with null sha1' + . ./test-lib.sh test_expect_success 'setup: base commits' '