Commit 629c08293051e9828f2ca3517d2659728647c2cd

Vicent Martí 2012-11-18T14:15:04

Merge pull request #1082 from scunz/fixDoubleDeleteOnError Indexer: Avoid a possible double-deletion in error case

diff --git a/src/indexer.c b/src/indexer.c
index 4a4ed32..e9f235a 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;
 }