@@ -104,6 +104,7 @@ static int branch_merged(int kind, const char *name,
104104 */
105105 struct commit * reference_rev = NULL ;
106106 const char * reference_name = NULL ;
107+ void * reference_name_to_free = NULL ;
107108 int merged ;
108109
109110 if (kind == REF_LOCAL_BRANCH ) {
@@ -114,11 +115,9 @@ static int branch_merged(int kind, const char *name,
114115 branch -> merge &&
115116 branch -> merge [0 ] &&
116117 branch -> merge [0 ]-> dst &&
117- (reference_name =
118- resolve_ref (branch -> merge [0 ]-> dst , sha1 , 1 , NULL )) != NULL ) {
119- reference_name = xstrdup (reference_name );
118+ (reference_name = reference_name_to_free =
119+ resolve_refdup (branch -> merge [0 ]-> dst , sha1 , 1 , NULL )) != NULL )
120120 reference_rev = lookup_commit_reference (sha1 );
121- }
122121 }
123122 if (!reference_rev )
124123 reference_rev = head_rev ;
@@ -143,7 +142,7 @@ static int branch_merged(int kind, const char *name,
143142 " '%s', even though it is merged to HEAD." ),
144143 name , reference_name );
145144 }
146- free (( char * ) reference_name );
145+ free (reference_name_to_free );
147146 return merged ;
148147}
149148
@@ -731,10 +730,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
731730
732731 track = git_branch_track ;
733732
734- head = resolve_ref ("HEAD" , head_sha1 , 0 , NULL );
733+ head = resolve_refdup ("HEAD" , head_sha1 , 0 , NULL );
735734 if (!head )
736735 die (_ ("Failed to resolve HEAD as a valid ref." ));
737- head = xstrdup (head );
738736 if (!strcmp (head , "HEAD" )) {
739737 detached = 1 ;
740738 } else {
0 commit comments