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 1c7b76be7d (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>
maint
Ævar Arnfjörð Bjarmason 2021-10-07 12:01:37 +02:00 committed by Junio C Hamano
parent 272f0a574d
commit 465028e0e2
2 changed files with 3 additions and 0 deletions

View File

@ -1576,6 +1576,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)


finish(head_commit, remoteheads, &commit->object.oid, msg.buf); finish(head_commit, remoteheads, &commit->object.oid, msg.buf);
remove_merge_branch_state(the_repository); remove_merge_branch_state(the_repository);
strbuf_release(&msg);
goto done; goto done;
} else if (!remoteheads->next && common->next) } else if (!remoteheads->next && common->next)
; ;
@ -1746,6 +1747,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
ret = suggest_conflicts(); ret = suggest_conflicts();


done: done:
strbuf_release(&buf);
free(branch_to_free); free(branch_to_free);
return ret; return ret;
} }

View File

@ -4,6 +4,7 @@ test_description='git merge


Testing merge when using a custom message for the merge commit.' Testing merge when using a custom message for the merge commit.'


TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh . ./test-lib.sh


create_merge_msgs() { create_merge_msgs() {