summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-08-25 23:31:29 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-08-25 23:31:29 +0200
commit7a57ae5478604df9a255a3067000336bc6bfd692 (patch)
tree06771222f6178b07deff2f6da810d1718ff3466d
parent8238401ccb9f7018c927866896bea583d351ad2a (diff)
downloadlibgit2-7a57ae5478604df9a255a3067000336bc6bfd692.tar.gz
indexer: don't segfault when freeing an unused indexer
Make sure that idx->pack isn't NULL before trying to free resources under it.
-rw-r--r--src/indexer.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/indexer.c b/src/indexer.c
index 30c6469a..719f54e2 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -587,9 +587,11 @@ void git_indexer_stream_free(git_indexer_stream *idx)
git_vector_foreach(&idx->objects, i, e)
git__free(e);
git_vector_free(&idx->objects);
- git_vector_foreach(&idx->pack->cache, i, pe)
- git__free(pe);
- git_vector_free(&idx->pack->cache);
+ if (idx->pack) {
+ git_vector_foreach(&idx->pack->cache, i, pe)
+ git__free(pe);
+ git_vector_free(&idx->pack->cache);
+ }
git_vector_foreach(&idx->deltas, i, delta)
git__free(delta);
git_vector_free(&idx->deltas);