summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Martí <tanoku@gmail.com>2011-07-21 19:20:52 -0700
committerVicent Martí <tanoku@gmail.com>2011-07-21 19:20:52 -0700
commit1c8a4aafadab4b6a893e0c1895deb1ab8c74d14a (patch)
tree767504b2e862699498ea479501968ba4a6cd9775
parent89fb9d04071172b12aa6718ec881ee0c0812b768 (diff)
parent26b1b15767a6e7b6401884611437ca25fe5555bb (diff)
downloadlibgit2-1c8a4aafadab4b6a893e0c1895deb1ab8c74d14a.tar.gz
Merge pull request #332 from kiryl/leaks
Fix two memory leaks pointed by valgrind
-rw-r--r--src/index.c2
-rw-r--r--src/refs.c11
2 files changed, 11 insertions, 2 deletions
diff --git a/src/index.c b/src/index.c
index 2fa9c1922..6390da3d7 100644
--- a/src/index.c
+++ b/src/index.c
@@ -196,6 +196,8 @@ void git_index_free(git_index *index)
return;
git_index_clear(index);
+ git_vector_free(&index->entries);
+ git_vector_free(&index->unmerged);
free(index->index_file_path);
free(index);
diff --git a/src/refs.c b/src/refs.c
index 78bab885e..8022c2b2a 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1404,7 +1404,14 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
free(ref->name);
ref->name = new_ref->name;
- if ((error = git_hashtable_insert2(ref->owner->references.loose_cache, new_ref->name, new_ref, (void **)&old_ref)) < GIT_SUCCESS)
+ /*
+ * No need in new_ref anymore. We created it to fix the change on disk.
+ * TODO: Refactoring required.
+ */
+ new_ref->name = NULL;
+ reference_free(new_ref);
+
+ if ((error = git_hashtable_insert2(ref->owner->references.loose_cache, ref->name, ref, (void **)&old_ref)) < GIT_SUCCESS)
goto rollback;
/*
@@ -1417,7 +1424,7 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
head_target = git_reference_target(head);
if (head_target && !strcmp(head_target, old_name))
- if ((error = git_reference_create_symbolic(&head, new_ref->owner, "HEAD", new_ref->name, 1)) < GIT_SUCCESS)
+ if ((error = git_reference_create_symbolic(&head, ref->owner, "HEAD", ref->name, 1)) < GIT_SUCCESS)
goto rollback;
cleanup: