Skip to content

Commit

Permalink
Merge pull request libgit2#2357 from libgit2/cmn/pack-cache-init
Browse files Browse the repository at this point in the history
pack: init the cache on packfile alloc
  • Loading branch information
arrbee committed May 15, 2014
2 parents 88b1b36 + 649214b commit 8e1b5a8
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions src/pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,16 +83,12 @@ static void cache_free(git_pack_cache *cache)
}

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)
{
memset(cache, 0, sizeof(*cache));

cache->entries = git_offmap_alloc();
GITERR_CHECK_ALLOC(cache->entries);

Expand Down Expand Up @@ -534,9 +530,6 @@ static int pack_dependency_chain(git_dependency_chain *chain_out,
size_t size, elem_pos;
git_otype type;

if (!p->bases.entries && (cache_init(&p->bases) < 0))
return -1;

elem_pos = 0;
while (true) {
struct pack_chain_elem *elem;
Expand Down Expand Up @@ -985,6 +978,7 @@ void git_packfile_free(struct git_pack_file *p)
git__free(p->bad_object_sha1);

git_mutex_free(&p->lock);
git_mutex_free(&p->bases.lock);
git__free(p);
}

Expand Down Expand Up @@ -1120,6 +1114,11 @@ int git_packfile_alloc(struct git_pack_file **pack_out, const char *path)
return -1;
}

if (cache_init(&p->bases) < 0) {
git__free(p);
return -1;
}

*pack_out = p;

return 0;
Expand Down

0 comments on commit 8e1b5a8

Please sign in to comment.