Commit 5903aa2b9acd184da217a22a13f5f4e97040f566

Vicent Martí 2011-07-12T11:22:11

Merge pull request #318 from schu/ref-fix-leak reference_rename: make sure old_name gets freed

diff --git a/src/refs.c b/src/refs.c
index 843c69a..78bab88 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -1290,7 +1290,7 @@ int git_reference_set_target(git_reference *ref, const char *target)
 int git_reference_rename(git_reference *ref, const char *new_name, int force)
 {
 	int error;
-	char *old_name = git__strdup(ref->name);
+	char *old_name = NULL;
 
 	char aux_path[GIT_PATH_MAX];
 	char normalized[GIT_REFNAME_MAX];
@@ -1328,6 +1328,8 @@ int git_reference_rename(git_reference *ref, const char *new_name, int force)
 	 * the new reference, e.g. when renaming foo/bar -> foo.
 	 */
 
+	old_name = git__strdup(ref->name);
+
 	if (ref->type & GIT_REF_SYMBOLIC) {
 		if ((target_ref = git_reference_target(ref)) == NULL)
 			goto cleanup;