X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=sha1_file.c;h=5ec5598d7d6cd56ebb40b21c497c0ae3db1dca57;hb=f0b32737ad5a35cc047db47353a75faccfe5939e;hp=6b9462cfba60764abf3956de45185e0e418ff82a;hpb=0ee19dce2cc21f15fa77e2eb01bdaa3eb490d8ac;p=git.git diff --git a/sha1_file.c b/sha1_file.c index 6b9462cf..5ec5598d 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1035,14 +1035,17 @@ void * read_sha1_file(const unsigned char *sha1, char *type, unsigned long *size { unsigned long mapsize; void *map, *buf; + struct pack_entry e; + if (find_pack_entry(sha1, &e)) + return read_packed_sha1(sha1, type, size); map = map_sha1_file_internal(sha1, &mapsize); if (map) { buf = unpack_sha1_file(map, mapsize, type, size); munmap(map, mapsize); return buf; } - return read_packed_sha1(sha1, type, size); + return NULL; } void *read_object_with_reference(const unsigned char *sha1, @@ -1343,9 +1346,9 @@ int has_sha1_file(const unsigned char *sha1) struct stat st; struct pack_entry e; - if (find_sha1_file(sha1, &st)) + if (find_pack_entry(sha1, &e)) return 1; - return find_pack_entry(sha1, &e); + return find_sha1_file(sha1, &st) ? 1 : 0; } int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, const char *type)