summaryrefslogtreecommitdiff
path: root/src/indexer.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-12-06 15:04:31 -0800
committerRussell Belfer <rb@github.com>2013-12-11 10:57:49 -0800
commitfcd324c625d8be3f368c924d787e945e5812d8dd (patch)
treeac1e54b2538cdc10ee17dfd7c887c35dd1f572bf /src/indexer.c
parentdab89f9b6821b67dd07c8bd4dbb53e25a3e687c7 (diff)
downloadlibgit2-fcd324c625d8be3f368c924d787e945e5812d8dd.tar.gz
Add git_vector_free_all
There are a lot of places that we call git__free on each item in a vector and then call git_vector_free on the vector itself. This just wraps that up into one convenient helper function.
Diffstat (limited to 'src/indexer.c')
-rw-r--r--src/indexer.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/indexer.c b/src/indexer.c
index 7312809bf..d3253cb57 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -1005,30 +1005,20 @@ on_error:
void git_indexer_free(git_indexer *idx)
{
- khiter_t k;
- unsigned int i;
- struct entry *e;
- struct delta_info *delta;
-
if (idx == NULL)
return;
- git_vector_foreach(&idx->objects, i, e)
- git__free(e);
- git_vector_free(&idx->objects);
+ git_vector_free_all(&idx->objects);
if (idx->pack) {
- for (k = kh_begin(idx->pack->idx_cache); k != kh_end(idx->pack->idx_cache); k++) {
- if (kh_exist(idx->pack->idx_cache, k))
- git__free(kh_value(idx->pack->idx_cache, k));
- }
+ struct git_pack_entry *pentry;
+ kh_foreach_value(
+ idx->pack->idx_cache, pentry, { git__free(pentry); });
git_oidmap_free(idx->pack->idx_cache);
}
- git_vector_foreach(&idx->deltas, i, delta)
- git__free(delta);
- git_vector_free(&idx->deltas);
+ git_vector_free_all(&idx->deltas);
git_packfile_free(idx->pack);
git_filebuf_cleanup(&idx->pack_file);
git__free(idx);