@@ -422,7 +422,7 @@ int git_config_set_multivar(const char* key, const char* value,
422422 const char * value_regex , int multi_replace )
423423{
424424 int i ;
425- int fd , in_fd ;
425+ int fd = -1 , in_fd ;
426426 int ret ;
427427 char * config_filename = strdup (git_path ("config" ));
428428 char * lock_file = strdup (git_path ("config.lock" ));
@@ -480,15 +480,11 @@ int git_config_set_multivar(const char* key, const char* value,
480480 if ( ENOENT != errno ) {
481481 error ("opening %s: %s" , config_filename ,
482482 strerror (errno ));
483- close (fd );
484- unlink (lock_file );
485483 ret = 3 ; /* same as "invalid config file" */
486484 goto out_free ;
487485 }
488486 /* if nothing to unset, error out */
489487 if (value == NULL ) {
490- close (fd );
491- unlink (lock_file );
492488 ret = 5 ;
493489 goto out_free ;
494490 }
@@ -516,8 +512,6 @@ int git_config_set_multivar(const char* key, const char* value,
516512 fprintf (stderr , "Invalid pattern: %s\n" ,
517513 value_regex );
518514 free (store .value_regex );
519- close (fd );
520- unlink (lock_file );
521515 ret = 6 ;
522516 goto out_free ;
523517 }
@@ -553,8 +547,6 @@ int git_config_set_multivar(const char* key, const char* value,
553547 /* if nothing to unset, or too many matches, error out */
554548 if ((store .seen == 0 && value == NULL ) ||
555549 (store .seen > 1 && multi_replace == 0 )) {
556- close (fd );
557- unlink (lock_file );
558550 ret = 5 ;
559551 goto out_free ;
560552 }
@@ -603,8 +595,6 @@ int git_config_set_multivar(const char* key, const char* value,
603595 unlink (config_filename );
604596 }
605597
606- close (fd );
607-
608598 if (rename (lock_file , config_filename ) < 0 ) {
609599 fprintf (stderr , "Could not rename the lock file?\n" );
610600 ret = 4 ;
@@ -614,10 +604,14 @@ int git_config_set_multivar(const char* key, const char* value,
614604 ret = 0 ;
615605
616606out_free :
607+ if (0 <= fd )
608+ close (fd );
617609 if (config_filename )
618610 free (config_filename );
619- if (lock_file )
611+ if (lock_file ) {
612+ unlink (lock_file );
620613 free (lock_file );
614+ }
621615 return ret ;
622616}
623617
0 commit comments