diff options
author | Junio C Hamano <junkio@cox.net> | 2007-03-28 13:33:37 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-28 13:44:04 -0700 |
commit | 542e165cdc4fbebbfe7c8954ca1aa1d4162e38cb (patch) | |
tree | f085406239e17030fdfea420a208a3d6e0833096 /commit.c | |
parent | 9c880b3ea56a7ff2f66dcf12eb2351f0f51a54ef (diff) | |
download | git-542e165cdc4fbebbfe7c8954ca1aa1d4162e38cb.tar.gz |
Fix "--pretty=format:" for parent related items.
There are two breakages in the %P/%p interpolation. It appended
an excess SP at the end of the list, and it gave uninitialized
contents of a buffer on the stack for root commits.
This fixes it, while updating the t6006 test which expected the
wrong output.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'commit.c')
-rw-r--r-- | commit.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -849,19 +849,23 @@ static long format_commit_message(const struct commit *commit, interp_set_entry(table, ITREE_ABBREV, find_unique_abbrev(commit->tree->object.sha1, DEFAULT_ABBREV)); + + parents[1] = 0; for (i = 0, p = commit->parents; p && i < sizeof(parents) - 1; p = p->next) - i += snprintf(parents + i, sizeof(parents) - i - 1, "%s ", + i += snprintf(parents + i, sizeof(parents) - i - 1, " %s", sha1_to_hex(p->item->object.sha1)); - interp_set_entry(table, IPARENTS, parents); + interp_set_entry(table, IPARENTS, parents + 1); + + parents[1] = 0; for (i = 0, p = commit->parents; p && i < sizeof(parents) - 1; p = p->next) - i += snprintf(parents + i, sizeof(parents) - i - 1, "%s ", + i += snprintf(parents + i, sizeof(parents) - i - 1, " %s", find_unique_abbrev(p->item->object.sha1, DEFAULT_ABBREV)); - interp_set_entry(table, IPARENTS_ABBREV, parents); + interp_set_entry(table, IPARENTS_ABBREV, parents + 1); for (i = 0, state = HEADER; msg[i] && state < BODY; i++) { int eol; |