mirror of
https://github.com/git/git.git
synced 2024-10-28 04:49:43 +01:00
config: close config file handle in case of error
When updating an existing configuration file, we did not always close the filehandle that is reading from the current configuration file when we encountered an error (e.g. when unsetting a variable that does not exist). Signed-off-by: Sven Strickroth <email@cs-ware.de> Signed-off-by: Sup Yut Sum <ch3cooli@gmail.com> Reviewed-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e88b8586bf
commit
54d160ec0d
1 changed files with 4 additions and 1 deletions
5
config.c
5
config.c
|
@ -1935,7 +1935,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
|||
const char *key, const char *value,
|
||||
const char *value_regex, int multi_replace)
|
||||
{
|
||||
int fd = -1, in_fd;
|
||||
int fd = -1, in_fd = -1;
|
||||
int ret;
|
||||
struct lock_file *lock = NULL;
|
||||
char *filename_buf = NULL;
|
||||
|
@ -2065,6 +2065,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
|||
goto out_free;
|
||||
}
|
||||
close(in_fd);
|
||||
in_fd = -1;
|
||||
|
||||
if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
|
||||
error("chmod on %s failed: %s",
|
||||
|
@ -2148,6 +2149,8 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
|||
free(filename_buf);
|
||||
if (contents)
|
||||
munmap(contents, contents_sz);
|
||||
if (in_fd >= 0)
|
||||
close(in_fd);
|
||||
return ret;
|
||||
|
||||
write_err_out:
|
||||
|
|
Loading…
Reference in a new issue