"git-diff -p :/anything" always segfaults
- From
Jim Meyering <jim@meyering.net>
- Date
- Mar 11, 2007, 18:49 UTC
- Message-ID
- <87d53fsjiz.fsf@rho.meyering.net>
I like the idea of the new ':/<oneline prefix>' notation, and gave it a try, but all I could get was a segfault. It was dereferencing a NULL commit list. Fix below. With it, this example now works:
$ mkdir .j; cd .j; touch f $ (git-init; git-add f; git-commit -mc f; echo x >f; git-commit -md f)>/dev/null $ git-diff -p :/c :/d
diff --git a/f b/f index e69de29..587be6b 100644 --- a/f +++ b/f @@ -0,0 +1 @@ +x Signed-off-by: Jim Meyering <jim@meyering.net> --- sha1_name.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/sha1_name.c b/sha1_name.c index 31812d3..6b6270b 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -617,7 +617,7 @@ int get_sha1_oneline(const char *prefix, unsigned char *sha1) for_each_ref(handle_one_ref, &list); for (l = list; l; l = l->next) commit_list_insert(l->item, &backup); - while ((commit = pop_most_recent_commit(&list, ONELINE_SEEN))) { + while (list && (commit = pop_most_recent_commit(&list, ONELINE_SEEN))) { char *p; parse_object(commit->object.sha1); if (!commit->buffer || !(p = strstr(commit->buffer, "\n\n"))) -- 1.5.0.3.316.gbd1fc