mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-24 01:58:13 +00:00
Merge pull request #2357 from libgit2/cmn/pack-cache-init
pack: init the cache on packfile alloc
This commit is contained in:
commit
8e1b5a8dc6
15
src/pack.c
15
src/pack.c
@ -83,16 +83,12 @@ static void cache_free(git_pack_cache *cache)
|
|||||||
}
|
}
|
||||||
|
|
||||||
git_offmap_free(cache->entries);
|
git_offmap_free(cache->entries);
|
||||||
git_mutex_free(&cache->lock);
|
cache->entries = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(cache, 0, sizeof(*cache));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cache_init(git_pack_cache *cache)
|
static int cache_init(git_pack_cache *cache)
|
||||||
{
|
{
|
||||||
memset(cache, 0, sizeof(*cache));
|
|
||||||
|
|
||||||
cache->entries = git_offmap_alloc();
|
cache->entries = git_offmap_alloc();
|
||||||
GITERR_CHECK_ALLOC(cache->entries);
|
GITERR_CHECK_ALLOC(cache->entries);
|
||||||
|
|
||||||
@ -534,9 +530,6 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
|
|||||||
size_t size, elem_pos;
|
size_t size, elem_pos;
|
||||||
git_otype type;
|
git_otype type;
|
||||||
|
|
||||||
if (!p->bases.entries && (cache_init(&p->bases) < 0))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
elem_pos = 0;
|
elem_pos = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
struct pack_chain_elem *elem;
|
struct pack_chain_elem *elem;
|
||||||
@ -985,6 +978,7 @@ void git_packfile_free(struct git_pack_file *p)
|
|||||||
git__free(p->bad_object_sha1);
|
git__free(p->bad_object_sha1);
|
||||||
|
|
||||||
git_mutex_free(&p->lock);
|
git_mutex_free(&p->lock);
|
||||||
|
git_mutex_free(&p->bases.lock);
|
||||||
git__free(p);
|
git__free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1120,6 +1114,11 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cache_init(&p->bases) < 0) {
|
||||||
|
git__free(p);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
*pack_out = p;
|
*pack_out = p;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user