summaryrefslogtreecommitdiff
path: root/src/indexer.c
diff options
context:
space:
mode:
authorSascha Cunz <Sascha@BabbelBox.org>2012-11-18 09:07:35 +0100
committerSascha Cunz <Sascha@BabbelBox.org>2012-11-18 09:07:35 +0100
commit4cc7342e952b75d5f77427cb83b413e9e195ed28 (patch)
tree9af91d91d59a1e65f42906b42cb11bde35a22760 /src/indexer.c
parent0066955d9752cab8f8533c0dddfc95d08ad13e33 (diff)
downloadlibgit2-4cc7342e952b75d5f77427cb83b413e9e195ed28.tar.gz
Indexer: Avoid a possible double-deletion in error case
Diffstat (limited to 'src/indexer.c')
-rw-r--r--src/indexer.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/indexer.c b/src/indexer.c
index 4a4ed325a..e9f235a72 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -249,8 +249,10 @@ static int hash_and_save(git_indexer_stream *idx, git_rawobj *obj, git_off_t ent
git_oid_cpy(&pentry->sha1, &oid);
pentry->offset = entry_start;
- if (git_vector_insert(&idx->pack->cache, pentry) < 0)
+ if (git_vector_insert(&idx->pack->cache, pentry) < 0) {
+ git__free(pentry);
goto on_error;
+ }
git_oid_cpy(&entry->oid, &oid);
entry->crc = crc32(0L, Z_NULL, 0);
@@ -275,7 +277,6 @@ static int hash_and_save(git_indexer_stream *idx, git_rawobj *obj, git_off_t ent
on_error:
git__free(entry);
- git__free(pentry);
git__free(obj->data);
return -1;
}