X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=pack-revindex.c;h=6096b6224ad551086afa346617eb714c15a51f78;hb=02ed24580eeb03cb6e68967bd55457d9ab978b7c;hp=a8aa2cd6caefe7d37febdf5c3426cec043492b19;hpb=1fbb58b4153e90eda08c2b022ee32d90729582e6;p=git.git diff --git a/pack-revindex.c b/pack-revindex.c index a8aa2cd6c..6096b6224 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) @@ -140,3 +142,15 @@ struct revindex_entry *find_pack_revindex(struct packed_git *p, off_t ofs) } while (lo < hi); die("internal error: pack revindex corrupt"); } + +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; + } +}