X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=pack-revindex.c;h=1de53c8934c03b46604e94cbf4237ad5ffc57f83;hb=f90cf2b9203e81e3a2b70b15480628e9189b7e60;hp=a8aa2cd6caefe7d37febdf5c3426cec043492b19;hpb=2d3cfd77ad5305c132f7b23c192ae6c327443c95;p=git.git diff --git a/pack-revindex.c b/pack-revindex.c index a8aa2cd6c..1de53c893 100644 --- a/pack-revindex.c +++ b/pack-revindex.c @@ -40,7 +40,7 @@ static int pack_revindex_ix(struct packed_git *p) return -1 - i; } -void init_pack_revindex(void) +static void init_pack_revindex(void) { int num; struct packed_git *p; @@ -118,9 +118,11 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs) struct pack_revindex *rix; struct revindex_entry *revindex; + if (!pack_revindex_hashsz) + init_pack_revindex(); num = pack_revindex_ix(p); if (num < 0) - die("internal error: pack revindex uninitialized"); + die("internal error: pack revindex fubar"); rix = &pack_revindex[num]; if (!rix->revindex) @@ -138,5 +140,18 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs) else lo = mi + 1; } while (lo < hi); - die("internal error: pack revindex corrupt"); + error("bad offset for revindex"); + return NULL; +} + +void discard_revindex(void) +{ + if (pack_revindex_hashsz) { + int i; + for (i = 0; i < pack_revindex_hashsz; i++) + if (pack_revindex[i].revindex) + free(pack_revindex[i].revindex); + free(pack_revindex); + pack_revindex_hashsz = 0; + } }