Nguyễn Thái Ngọc Duy [off-list ref] writes:
We could rely on atexit() to clean up everything, but let's be
explicit when we can. And it's good anyway because the function is
called the second time in the same process, we're in trouble.
This function should not affect the successful case because after
commit_lock_file() is called, rollback_lock_file() becomes no-op.
Not really. At the point of the first "goto out" in this function,
lock is merely an uninitialized pointer.
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
quoted hunk
config.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/config.c b/config.c
index 505e0d0..e02def4 100644
--- a/config.c
+++ b/config.c
@@ -2483,6 +2483,7 @@ int git_config_rename_section_in_file(const char *config_filename,
ret = error_errno("could not write config file %s",
config_filename);
out:
+ rollback_lock_file(lock);
free(filename_buf);
return ret;
}