fix hang in git fetch if pointed at a 0 length bundle

git-repo if interupted at the exact wrong time will generate zero
length bundles- literal empty files.  git-repo is wrong here, but
git fetch shouldn't effectively spin loop if pointed at a zero
length bundle.

Signed-off-by: Brian Harring <ferringb@chromium.org>
Helped-by: Johannes Sixt
Helped-by: Nguyen Thai Ngoc Duy
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brian Harring 2012-01-03 05:46:03 -08:00 committed by Junio C Hamano
parent f3f778df69
commit 54440e154f
2 changed files with 8 additions and 2 deletions

View file

@ -31,8 +31,8 @@ static int strbuf_readline_fd(struct strbuf *sb, int fd)
while (1) {
char ch;
ssize_t len = xread(fd, &ch, 1);
if (len < 0)
return -1;
if (len <= 0)
return len;
strbuf_addch(sb, ch);
if (ch == '\n')
break;

View file

@ -53,4 +53,10 @@ test_expect_failure 'bundle --stdin <rev-list options>' '
'
test_expect_success 'empty bundle file is rejected' '
>empty-bundle && test_must_fail git fetch empty-bundle
'
test_done