fsck: give accurate error message on empty loose object files
authorMatthieu Moy <Matthieu.Moy@imag.fr>
Mon, 6 Feb 2012 16:24:52 +0000 (17:24 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Feb 2012 19:05:36 +0000 (11:05 -0800)
commit33e42de0d21a8365496e904235bd32fd4659300d
treee048aaf750166c743afe369b5b78f8f22a27f39d
parent3ba7a065527a27f45659398e882feaa1165cbb4c
fsck: give accurate error message on empty loose object files

Since 3ba7a065527a (A loose object is not corrupt if it
cannot be read due to EMFILE), "git fsck" on a repository with an empty
loose object file complains with the error message

  fatal: failed to read object <sha1>: Invalid argument

This comes from a failure of mmap on this empty file, which sets errno to
EINVAL. Instead of calling xmmap on empty file, we display a clean error
message ourselves, and return a NULL pointer. The new message is

  error: object file .git/objects/09/<rest-of-sha1> is empty
  fatal: loose object <sha1> (stored in .git/objects/09/<rest-of-sha1>) is corrupt

The second line was already there before the regression in 3ba7a065527a,
and the first is an additional message, that should help diagnosing the
problem for the user.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c