The loop can be triggered with "git diff-tree --graph commit" where the commit is a non-merge. It goes like this - graph_show_commit - graph_next_line - graph_output_padding_line The last function quits because graph->commit is NULL, but graph_next_line() does not return "shown", so the loop in graph_show_commit keeps going. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- Corner case. Nobody sane would do that. But still worth plugging. graph.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graph.c b/graph.c index e864fe2..1735b26 100644 --- a/graph.c +++ b/graph.c @@ -1224,7 +1224,7 @@ void graph_show_commit(struct git_graph *graph) struct strbuf msgbuf = STRBUF_INIT; int shown_commit_line = 0; - if (!graph) + if (!graph || !graph->commit) return; while (!shown_commit_line) { -- 1.7.12.1.389.gc2218b5 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html