treewide: prefer lockfiles on the stack
There is no longer any need to allocate and leak a `struct lock_file`. The previous patch addressed an instance where we needed a minor tweak alongside the trivial changes. Deal with the remaining instances where we allocate and leak a struct within a single function. Change them to have the `struct lock_file` on the stack instead. These instances were identified by running `git grep "^\s*struct lock_file\s*\*"`. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
f132a127ee
commit
837e34eba4
17
config.c
17
config.c
@ -2748,7 +2748,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
{
|
||||
int ret = 0, remove = 0;
|
||||
char *filename_buf = NULL;
|
||||
struct lock_file *lock;
|
||||
struct lock_file lock = LOCK_INIT;
|
||||
int out_fd;
|
||||
char buf[1024];
|
||||
FILE *config_file = NULL;
|
||||
@ -2762,8 +2762,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
if (!config_filename)
|
||||
config_filename = filename_buf = git_pathdup("config");
|
||||
|
||||
lock = xcalloc(1, sizeof(struct lock_file));
|
||||
out_fd = hold_lock_file_for_update(lock, config_filename, 0);
|
||||
out_fd = hold_lock_file_for_update(&lock, config_filename, 0);
|
||||
if (out_fd < 0) {
|
||||
ret = error("could not lock config file %s", config_filename);
|
||||
goto out;
|
||||
@ -2782,9 +2781,9 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (chmod(get_lock_file_path(lock), st.st_mode & 07777) < 0) {
|
||||
if (chmod(get_lock_file_path(&lock), st.st_mode & 07777) < 0) {
|
||||
ret = error_errno("chmod on %s failed",
|
||||
get_lock_file_path(lock));
|
||||
get_lock_file_path(&lock));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -2805,7 +2804,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
}
|
||||
store.baselen = strlen(new_name);
|
||||
if (write_section(out_fd, new_name) < 0) {
|
||||
ret = write_error(get_lock_file_path(lock));
|
||||
ret = write_error(get_lock_file_path(&lock));
|
||||
goto out;
|
||||
}
|
||||
/*
|
||||
@ -2831,20 +2830,20 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
continue;
|
||||
length = strlen(output);
|
||||
if (write_in_full(out_fd, output, length) < 0) {
|
||||
ret = write_error(get_lock_file_path(lock));
|
||||
ret = write_error(get_lock_file_path(&lock));
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
fclose(config_file);
|
||||
config_file = NULL;
|
||||
commit_and_out:
|
||||
if (commit_lock_file(lock) < 0)
|
||||
if (commit_lock_file(&lock) < 0)
|
||||
ret = error_errno("could not write config file %s",
|
||||
config_filename);
|
||||
out:
|
||||
if (config_file)
|
||||
fclose(config_file);
|
||||
rollback_lock_file(lock);
|
||||
rollback_lock_file(&lock);
|
||||
out_no_rollback:
|
||||
free(filename_buf);
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user