diff --git a/pack-objects.c b/pack-objects.c index cde4afa798..084c2006a9 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -905,11 +905,21 @@ int main(int argc, char **argv) setup_progress_signal(); } - while (fgets(line, sizeof(line), stdin) != NULL) { + for (;;) { unsigned int hash; char *p; unsigned char sha1[20]; + if (!fgets(line, sizeof(line), stdin)) { + if (feof(stdin)) + break; + if (!ferror(stdin)) + die("fgets returned NULL, not EOF, not error!"); + if (errno == EINTR) + continue; + die("fgets: %s", strerror(errno)); + } + if (progress_update) { fprintf(stderr, "Counting objects...%d\r", nr_objects); progress_update = 0;