Commit 8e1b5a8d by Russell Belfer

Merge pull request #2357 from libgit2/cmn/pack-cache-init

pack: init the cache on packfile alloc
parents 88b1b36d 649214be
...@@ -83,16 +83,12 @@ static void cache_free(git_pack_cache *cache) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment