aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-03-28 13:33:37 -0700
committerJunio C Hamano <junkio@cox.net>2007-03-28 13:44:04 -0700
commit542e165cdc4fbebbfe7c8954ca1aa1d4162e38cb (patch)
treef085406239e17030fdfea420a208a3d6e0833096
parent9c880b3ea56a7ff2f66dcf12eb2351f0f51a54ef (diff)
downloadgit-542e165cdc4fbebbfe7c8954ca1aa1d4162e38cb.tar.gz
git-542e165cdc4fbebbfe7c8954ca1aa1d4162e38cb.tar.xz
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>
-rw-r--r--commit.c12
-rwxr-xr-x[-rw-r--r--]t/t6006-rev-list-format.sh8
2 files changed, 12 insertions, 8 deletions
diff --git a/commit.c b/commit.c
index a92958cfa..9ac533c85 100644
--- a/commit.c
+++ b/commit.c
@@ -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;
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index cf096c357..ce9c7dc6e 100644..100755
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -39,11 +39,11 @@ EOF
test_format parents %P%n%p <<'EOF'
commit 131a310eb913d107dd3c09a65d1651175898735d
-86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-86c75cf
+86c75cfd708a0e5868dc876ed5b8bb66c80b4873
+86c75cf
commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-86c75cf
-86c75cf
+
+
EOF
# we don't test relative here