merge: add missing strbuf_release()
We strbuf_reset() this "struct strbuf" in a loop earlier, but never freed it. Plugs a memory leak that's been here ever since this code got introduced in 1c7b76be7d6 (Build in merge, 2008-07-07). This takes us from 68 failed tests in "t7600-merge.sh" to 59 under SANITIZE=leak, and makes "t7604-merge-custom-message.sh" pass! Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ævar Arnfjörð Bjarmason committed
Oct 7, 2021 at 12:01 UTC
465028e0e25518bfff8b83057775cb6b2df2aade
2 files changed
+3
builtin/merge.c
+2
@@ -1576,6 +1576,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1576
1577
finish(head_commit, remoteheads, &commit->object.oid, msg.buf);
1578
remove_merge_branch_state(the_repository);
1579
+ strbuf_release(&msg);
1580
goto done;
1581
} else if (!remoteheads->next && common->next)
1582
;
@@ -1746,6 +1747,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
1747
ret = suggest_conflicts();
1748
1749
done:
1750
+ strbuf_release(&buf);
1751
free(branch_to_free);
1752
return ret;
1753
}
t/t7604-merge-custom-message.sh
+1
@@ -4,6 +4,7 @@ test_description='git merge
4
5
Testing merge when using a custom message for the merge commit.'
6
7
+TEST_PASSES_SANITIZE_LEAK=true
8
. ./test-lib.sh
9
10
create_merge_msgs() {