Browse Source

blame: handle broken commit headers gracefully

split_ident_line() can leave us with the pointers date_begin, date_end,
tz_begin and tz_end all set to NULL.  Check them before use and supply
the same fallback values as in the case of a negative return code from
split_ident_line().

The "(unknown)" is not actually shown in the output, though, because it
will be converted to a number (zero) eventually.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 12 years ago committed by Junio C Hamano
parent
commit
de5abe9fe9
  1. 11
      builtin/blame.c

11
builtin/blame.c

@ -1375,10 +1375,15 @@ static void get_ac_line(const char *inbuf, const char *what, @@ -1375,10 +1375,15 @@ static void get_ac_line(const char *inbuf, const char *what,
maillen = ident.mail_end - ident.mail_begin;
mailbuf = ident.mail_begin;

*time = strtoul(ident.date_begin, NULL, 10);
if (ident.date_begin && ident.date_end)
*time = strtoul(ident.date_begin, NULL, 10);
else
*time = 0;

len = ident.tz_end - ident.tz_begin;
strbuf_add(tz, ident.tz_begin, len);
if (ident.tz_begin && ident.tz_end)
strbuf_add(tz, ident.tz_begin, ident.tz_end - ident.tz_begin);
else
strbuf_addstr(tz, "(unknown)");

/*
* Now, convert both name and e-mail using mailmap

Loading…
Cancel
Save