From: Junio C Hamano Date: Thu, 28 Oct 2010 18:13:06 +0000 (-0700) Subject: A loose object is not corrupt if it cannot be read due to EMFILE X-Git-Tag: v1.7.4-rc0~92^2~2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3ba7a065527a27f45659398e882feaa1165cbb4c;p=git.git A loose object is not corrupt if it cannot be read due to EMFILE "git fsck" bails out with a claim that a loose object that cannot be read but exists on the filesystem to be corrupt, which is wrong when read_object() failed due to e.g. EMFILE. Signed-off-by: Junio C Hamano --- diff --git a/sha1_file.c b/sha1_file.c index 42517987a..25f696529 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2090,16 +2090,21 @@ void *read_sha1_file_repl(const unsigned char *sha1, const unsigned char **replacement) { const unsigned char *repl = lookup_replace_object(sha1); - void *data = read_object(repl, type, size); + void *data; char *path; const struct packed_git *p; + errno = 0; + data = read_object(repl, type, size); if (data) { if (replacement) *replacement = repl; return data; } + if (errno != ENOENT) + die_errno("failed to read object %s", sha1_to_hex(sha1)); + /* die if we replaced an object with one that does not exist */ if (repl != sha1) die("replacement %s not found for %s",