line-log: fix crash when --first-parent is used
line-log tries to access all parents of a commit, but only the first parent has been loaded if "--first-parent" is specified, resulting in a crash. Limit the number of parents to one if "--first-parent" is specified. Reported-by: Eric N. Vander Weele <ericvw@gmail.com> Signed-off-by: Tzvetan Mikov <tmikov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tzvetan Mikov committed
Nov 4, 2014 at 12:33 UTC
a8787c5c1c51f4bdb610526175442a23eea7c467
2 files changed
+8
line-log.c
+3
@@ -1164,6 +1164,9 @@ static int process_ranges_merge_commit(struct rev_info *rev, struct commit *comm
1164
int i;
1165
int nparents = count_parents(commit);
1166
1167
+ if (nparents > 1 && rev->first_parent_only)
1168
+ nparents = 1;
1169
+
1170
diffqueues = xmalloc(nparents * sizeof(*diffqueues));
1171
cand = xmalloc(nparents * sizeof(*cand));
1172
parents = xmalloc(nparents * sizeof(*parents));
t/t4211-line-log.sh
+5
@@ -77,4 +77,9 @@ test_expect_success '-L {empty-range} (first -L)' '
77
git log -L$n:b.c
78
'
79
80
+test_expect_success '-L with --first-parent and a merge' '
81
+ git checkout parallel-change &&
82
+ git log --first-parent -L 1,1:b.c
83
+'
84
+
85
test_done