do not create "struct commit" with xcalloc
commit10322a0aaf84382d8901f9ab59e59c39f0c035bb
authorJeff King <peff@peff.net>
Tue, 10 Jun 2014 21:39:11 +0000 (10 17:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Jun 2014 17:29:42 +0000 (12 10:29 -0700)
tree970192cbf707078dc581dd734242fd5db166fc77
parent969eba6341a5af8ac52c67e26462548ed05e23e3
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>
builtin/blame.c
merge-recursive.c