@@ -299,8 +299,10 @@ static int git_tag_create__internal(
299299 }
300300
301301 if (create_tag_annotation ) {
302- if (write_tag_annotation (oid , repo , tag_name , target , tagger , message ) < 0 )
302+ if (write_tag_annotation (oid , repo , tag_name , target , tagger , message ) < 0 ) {
303+ git_str_dispose (& ref_name );
303304 return -1 ;
305+ }
304306 } else
305307 git_oid_cpy (oid , git_object_id (target ));
306308
@@ -397,14 +399,17 @@ int git_tag_create_from_buffer(git_oid *oid, git_repository *repo, const char *b
397399 /** Ensure the tag name doesn't conflict with an already existing
398400 * reference unless overwriting has explicitly been requested **/
399401 if (error == 0 && !allow_ref_overwrite ) {
402+ git_str_dispose (& ref_name );
400403 git_error_set (GIT_ERROR_TAG , "tag already exists" );
401404 return GIT_EEXISTS ;
402405 }
403406
404407 /* write the buffer */
405408 if ((error = git_odb_open_wstream (
406- & stream , odb , strlen (buffer ), GIT_OBJECT_TAG )) < 0 )
409+ & stream , odb , strlen (buffer ), GIT_OBJECT_TAG )) < 0 ) {
410+ git_str_dispose (& ref_name );
407411 return error ;
412+ }
408413
409414 if (!(error = git_odb_stream_write (stream , buffer , strlen (buffer ))))
410415 error = git_odb_stream_finalize_write (oid , stream );
0 commit comments