mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
pack-bitmap.c: more aggressively free in free_bitmap_index()
The function free_bitmap_index() is somewhat lax in what it frees. There
are two notable examples:
- While it does call kh_destroy_oid_map on the "bitmaps" map, which
maps commit OIDs to their corresponding bitmaps, the bitmaps
themselves are not freed. Note here that we recycle already-freed
ewah_bitmaps into a pool, but these are handled correctly by
ewah_pool_free().
- We never bother to free the extended index's "positions" map, which
we always allocate in load_bitmap().
Fix both of these.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
022815114a
commit
655b8561d6
@@ -1859,9 +1859,17 @@ void free_bitmap_index(struct bitmap_index *b)
|
||||
ewah_pool_free(b->trees);
|
||||
ewah_pool_free(b->blobs);
|
||||
ewah_pool_free(b->tags);
|
||||
if (b->bitmaps) {
|
||||
struct stored_bitmap *sb;
|
||||
kh_foreach_value(b->bitmaps, sb, {
|
||||
ewah_pool_free(sb->root);
|
||||
free(sb);
|
||||
});
|
||||
}
|
||||
kh_destroy_oid_map(b->bitmaps);
|
||||
free(b->ext_index.objects);
|
||||
free(b->ext_index.hashes);
|
||||
kh_destroy_oid_pos(b->ext_index.positions);
|
||||
bitmap_free(b->result);
|
||||
bitmap_free(b->haves);
|
||||
if (bitmap_is_midx(b)) {
|
||||
|
||||
Reference in New Issue
Block a user