Commit Diff


commit - c53671d0164e8b30ca7a3c4f2ce8d02767ff9e5c
commit + c980e4703622d93dfeebcd122bc9f747227b55f6
blob - 5205a7b0e82caacfbe5a56fbc0905da79cbe9bd7
blob + f548d7dccd99e1721c253fb83954b7ea79234ef5
--- lib/reference.c
+++ lib/reference.c
@@ -86,13 +86,13 @@ alloc_ref(struct got_reference **ref, const char *name
 		return got_error_from_errno();
 
 	memcpy(&(*ref)->ref.ref.sha1, id->sha1, SHA1_DIGEST_LENGTH);
+	(*ref)->flags = flags;
 	(*ref)->ref.ref.name = strdup(name);
 	if ((*ref)->ref.ref.name == NULL) {
 		err = got_error_from_errno();
-		free(*ref);
+		got_ref_close(*ref);
 		*ref = NULL;
 	}
-	(*ref)->flags = flags;
 	return err;
 }