aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-06-10 17:39:11 -0400
committerJunio C Hamano <gitster@pobox.com>2014-06-12 10:29:42 -0700
commit10322a0aaf84382d8901f9ab59e59c39f0c035bb (patch)
tree970192cbf707078dc581dd734242fd5db166fc77 /builtin
parent969eba6341a5af8ac52c67e26462548ed05e23e3 (diff)
downloadgit-10322a0aaf84382d8901f9ab59e59c39f0c035bb.tar.gz
git-10322a0aaf84382d8901f9ab59e59c39f0c035bb.tar.xz
do not create "struct commit" with xcalloc
In both blame and merge-recursive, we sometimes create a "fake" commit struct for convenience (e.g., to represent the HEAD state as if we would commit it). By allocating ourselves rather than using alloc_commit_node, we do not properly set the "index" field of the commit. This can produce subtle bugs if we then use commit-slab on the resulting commit, as we will share the "0" index with another commit. We can fix this by using alloc_commit_node() to allocate. Note that we cannot free the result, as it is part of our commit allocator. However, both cases were already leaking the allocated commit anyway, so there's nothing to fix up. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/blame.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/blame.c b/builtin/blame.c
index 88cb79972..6e22bdfbf 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2019,7 +2019,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
struct strbuf msg = STRBUF_INIT;
time(&now);
- commit = xcalloc(1, sizeof(*commit));
+ commit = alloc_commit_node();
commit->object.parsed = 1;
commit->date = now;
commit->object.type = OBJ_COMMIT;