[PATCH] show-diff.c: check unreadbale blob.
authorJunio C Hamano <junkio@cox.net>
Mon, 18 Apr 2005 22:07:24 +0000 (15:07 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 18 Apr 2005 22:07:24 +0000 (15:07 -0700)
This patch fixes show-diff to detect unreadable blob and warn
instead of going ahead and crashing.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
show-diff.c
index 2bd789c261851e899bdf653c1fa59d39412c6f51..dacdd36394a30b95458221585f10f359924d89cb 100644 (file)
@@ -71,6 +71,11 @@ static void show_diff_empty(struct cache_entry *ce)
        unsigned char type[20], *p, *end;
 
        old = read_sha1_file(ce->sha1, type, &size);
+       if (! old) {
+               error("unable to read blob object for %s (%s)", ce->name,
+                     sha1_to_hex(ce->sha1));
+               return;
+       }
        if (size > 0) {
                int startline = 1;
                int c = 0;
@@ -195,7 +200,11 @@ int main(int argc, char **argv)
                        continue;
 
                old = read_sha1_file(ce->sha1, type, &size);
-               show_differences(ce->name, old, size);
+               if (! old)
+                       error("unable to read blob object for %s (%s)",
+                             ce->name, sha1_to_hex(ce->sha1));
+               else
+                       show_differences(ce->name, old, size);
                free(old);
        }
        return 0;