Browse Source

Merge branch 'maint'

* maint:
  Prevent git blame from segfaulting on a missing author name
maint
Junio C Hamano 15 years ago
parent
commit
129a5a6dea
  1. 13
      builtin-blame.c
  2. 13
      t/t8003-blame.sh

13
builtin-blame.c

@ -1305,6 +1305,7 @@ static void get_ac_line(const char *inbuf, const char *what, @@ -1305,6 +1305,7 @@ static void get_ac_line(const char *inbuf, const char *what,
error_out:
/* Ugh */
*tz = "(unknown)";
strcpy(person, *tz);
strcpy(mail, *tz);
*time = 0;
return;
@ -1314,20 +1315,26 @@ static void get_ac_line(const char *inbuf, const char *what, @@ -1314,20 +1315,26 @@ static void get_ac_line(const char *inbuf, const char *what,
tmp = person;
tmp += len;
*tmp = 0;
while (*tmp != ' ')
while (person < tmp && *tmp != ' ')
tmp--;
if (tmp <= person)
goto error_out;
*tz = tmp+1;
tzlen = (person+len)-(tmp+1);

*tmp = 0;
while (*tmp != ' ')
while (person < tmp && *tmp != ' ')
tmp--;
if (tmp <= person)
goto error_out;
*time = strtoul(tmp, NULL, 10);
timepos = tmp;

*tmp = 0;
while (*tmp != ' ')
while (person < tmp && *tmp != ' ')
tmp--;
if (tmp <= person)
return;
mailpos = tmp + 1;
*tmp = 0;
maillen = timepos - tmp;

13
t/t8003-blame.sh

@ -144,4 +144,17 @@ test_expect_success 'blame path that used to be a directory' ' @@ -144,4 +144,17 @@ test_expect_success 'blame path that used to be a directory' '
git blame HEAD^.. -- path
'

test_expect_success 'blame to a commit with no author name' '
TREE=`git rev-parse HEAD:`
cat >badcommit <<EOF
tree $TREE
author <noname> 1234567890 +0000
committer David Reiss <dreiss@facebook.com> 1234567890 +0000

some message
EOF
COMMIT=`git hash-object -t commit -w badcommit`
git --no-pager blame $COMMIT -- uno >/dev/null
'

test_done

Loading…
Cancel
Save