mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
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>
This commit is contained in:
parent
9c880b3ea5
commit
542e165cdc
12
commit.c
12
commit.c
|
@ -849,19 +849,23 @@ static long format_commit_message(const struct commit *commit,
|
||||||
interp_set_entry(table, ITREE_ABBREV,
|
interp_set_entry(table, ITREE_ABBREV,
|
||||||
find_unique_abbrev(commit->tree->object.sha1,
|
find_unique_abbrev(commit->tree->object.sha1,
|
||||||
DEFAULT_ABBREV));
|
DEFAULT_ABBREV));
|
||||||
|
|
||||||
|
parents[1] = 0;
|
||||||
for (i = 0, p = commit->parents;
|
for (i = 0, p = commit->parents;
|
||||||
p && i < sizeof(parents) - 1;
|
p && i < sizeof(parents) - 1;
|
||||||
p = p->next)
|
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));
|
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;
|
for (i = 0, p = commit->parents;
|
||||||
p && i < sizeof(parents) - 1;
|
p && i < sizeof(parents) - 1;
|
||||||
p = p->next)
|
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,
|
find_unique_abbrev(p->item->object.sha1,
|
||||||
DEFAULT_ABBREV));
|
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++) {
|
for (i = 0, state = HEADER; msg[i] && state < BODY; i++) {
|
||||||
int eol;
|
int eol;
|
||||||
|
|
8
t/t6006-rev-list-format.sh
Normal file → Executable file
8
t/t6006-rev-list-format.sh
Normal file → Executable file
|
@ -39,11 +39,11 @@ EOF
|
||||||
|
|
||||||
test_format parents %P%n%p <<'EOF'
|
test_format parents %P%n%p <<'EOF'
|
||||||
commit 131a310eb913d107dd3c09a65d1651175898735d
|
commit 131a310eb913d107dd3c09a65d1651175898735d
|
||||||
86c75cfd708a0e5868dc876ed5b8bb66c80b4873
|
86c75cfd708a0e5868dc876ed5b8bb66c80b4873
|
||||||
86c75cf
|
86c75cf
|
||||||
commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
|
commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
|
||||||
86c75cf
|
|
||||||
86c75cf
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# we don't test relative here
|
# we don't test relative here
|
||||||
|
|
Loading…
Reference in a new issue