]> granicus.if.org Git - git/commitdiff
config.c: handle lock file in error case in git_config_rename_...
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Tue, 20 Dec 2016 09:48:36 +0000 (16:48 +0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 Dec 2016 20:31:50 +0000 (12:31 -0800)
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,
as long as it is initialized.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c

index 8065296a116e6402f061a60b006526b77330119f..398ffec29d6a471edfa208a58a742de99df9d6d3 100644 (file)
--- a/config.c
+++ b/config.c
@@ -2314,7 +2314,7 @@ int git_config_rename_section_in_file(const char *config_filename,
 
        if (new_name && !section_name_is_ok(new_name)) {
                ret = error("invalid section name: %s", new_name);
-               goto out;
+               goto out_no_rollback;
        }
 
        if (!config_filename)
@@ -2396,6 +2396,8 @@ commit_and_out:
                ret = error_errno("could not write config file %s",
                                  config_filename);
 out:
+       rollback_lock_file(lock);
+out_no_rollback:
        free(filename_buf);
        return ret;
 }