summaryrefslogtreecommitdiff
path: root/builtin/commit.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-05-23 14:39:54 -0700
committerJunio C Hamano <gitster@pobox.com>2022-05-23 14:39:54 -0700
commitea78f9ee7a595d9e85195c0802d9170fe4ce442e (patch)
treed8bec7c6b3af8348e60f29b32610e15af1526303 /builtin/commit.c
parentf9b95943b68b6b8ca5a6072f50a08411c6449b55 (diff)
parent00d8c311050824f841617e954c641ec2ebb300ec (diff)
Merge branch 'ab/commit-plug-leaks'
Leakfix in the top-level called-once function. * ab/commit-plug-leaks: commit: fix "author_ident" leak
Diffstat (limited to 'builtin/commit.c')
-rw-r--r--builtin/commit.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/builtin/commit.c b/builtin/commit.c
index 7316fbba1d..9bbc7f8075 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1687,6 +1687,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
struct commit *current_head = NULL;
struct commit_extra_header *extra = NULL;
struct strbuf err = STRBUF_INIT;
+ int ret = 0;
if (argc == 2 && !strcmp(argv[1], "-h"))
usage_with_options(builtin_commit_usage, builtin_commit_options);
@@ -1721,8 +1722,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
running hooks, writing the trees, and interacting with the user. */
if (!prepare_to_commit(index_file, prefix,
current_head, &s, &author_ident)) {
+ ret = 1;
rollback_index_files();
- return 1;
+ goto cleanup;
}
/* Determine parents */
@@ -1820,7 +1822,6 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
rollback_index_files();
die(_("failed to write commit object"));
}
- strbuf_release(&author_ident);
free_commit_extra_headers(extra);
if (update_head_with_reflog(current_head, &oid, reflog_msg, &sb,
@@ -1862,7 +1863,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
apply_autostash(git_path_merge_autostash(the_repository));
+cleanup:
+ UNLEAK(author_ident);
UNLEAK(err);
UNLEAK(sb);
- return 0;
+ return ret;
}