]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge: add missing strbuf_release()
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 7 Oct 2021 10:01:37 +0000 (12:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Oct 2021 22:40:16 +0000 (15:40 -0700)
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>
builtin/merge.c
t/t7604-merge-custom-message.sh

index 3fbdacc7db4d86893b52d2d82f3e729955ce10ed..e52f308a1a0399db91c44716583f3008afc3bd2a 100644 (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);
                remove_merge_branch_state(the_repository);
+               strbuf_release(&msg);
                goto done;
        } else if (!remoteheads->next && common->next)
                ;
@@ -1746,6 +1747,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                ret = suggest_conflicts();
 
 done:
+       strbuf_release(&buf);
        free(branch_to_free);
        return ret;
 }
index cd4f9607dc13ce7acfebc62d67bb4dbf1ef46135..eca755510160be797ff1b08b67f4e18fa10dddb9 100755 (executable)
@@ -4,6 +4,7 @@ test_description='git merge
 
 Testing merge when using a custom message for the merge commit.'
 
+TEST_PASSES_SANITIZE_LEAK=true
 . ./test-lib.sh
 
 create_merge_msgs() {