]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sha1_file: silence sha1_loose_object_info
authorThomas Rast <trast@inf.ethz.ch>
Thu, 30 May 2013 20:00:22 +0000 (22:00 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Jun 2013 19:51:53 +0000 (12:51 -0700)
sha1_object_info() returns -1 (OBJ_BAD) if it cannot find the object
for some reason, which suggests that it wants the _caller_ to report
this error.  However, part of its work happens in
sha1_loose_object_info, which _does_ report errors itself.  This is
doubly strange because:

* packed_object_info(), which is the other half of the duo, does _not_
  report this.

* In the event that an object is packed and pruned while
  sha1_object_info_extended() goes looking for it, we would
  erroneously show the error -- even though the code of the latter
  function purports to handle this case gracefully.

* A caller might invoke sha1_object_info() to find the type of an
  object even if that object is not known to exist.

Silence this error.  The others remain untouched as a corrupt object
is a much more grave error than it merely being absent.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c

index 40b23297b2e1e60a3719e9c67256303e39456604..d804e25454a9f5e87ddce3a72853bdeac06d83c8 100644 (file)
@@ -2140,7 +2140,7 @@ static int sha1_loose_object_info(const unsigned char *sha1, unsigned long *size
 
        map = map_sha1_file(sha1, &mapsize);
        if (!map)
-               return error("unable to find %s", sha1_to_hex(sha1));
+               return -1;
        if (unpack_sha1_header(&stream, map, mapsize, hdr, sizeof(hdr)) < 0)
                status = error("unable to unpack %s header",
                               sha1_to_hex(sha1));