Commit b7fbfbb2 by Vicent Martí

Merge pull request #1942 from libgit2/fix/config_propagate_error

Propagate ELOCKED error when updating the config
parents 3ae66ef1 e8162fd0
...@@ -385,10 +385,10 @@ static int config_set(git_config_backend *cfg, const char *name, const char *val ...@@ -385,10 +385,10 @@ static int config_set(git_config_backend *cfg, const char *name, const char *val
GITERR_CHECK_ALLOC(esc_value); GITERR_CHECK_ALLOC(esc_value);
} }
if (config_write(b, key, NULL, esc_value) < 0) { if ((ret = config_write(b, key, NULL, esc_value)) < 0) {
git__free(esc_value); git__free(esc_value);
cvar_free(var); cvar_free(var);
return -1; return ret;
} }
git__free(esc_value); git__free(esc_value);
...@@ -1210,8 +1210,8 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p ...@@ -1210,8 +1210,8 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p
write_start = data_start; write_start = data_start;
/* Lock the file */ /* Lock the file */
if (git_filebuf_open(&file, cfg->file_path, 0, GIT_CONFIG_FILE_MODE) < 0) if ((result = git_filebuf_open(&file, cfg->file_path, 0, GIT_CONFIG_FILE_MODE)) < 0)
return -1; return result;
skip_bom(reader); skip_bom(reader);
ldot = strrchr(key, '.'); ldot = strrchr(key, '.');
......
...@@ -259,3 +259,16 @@ void test_config_write__can_set_an_empty_value(void) ...@@ -259,3 +259,16 @@ void test_config_write__can_set_an_empty_value(void)
git_config_free(config); git_config_free(config);
cl_git_sandbox_cleanup(); cl_git_sandbox_cleanup();
} }
void test_config_write__updating_a_locked_config_file_returns_ELOCKED(void)
{
git_config *cfg;
cl_git_pass(git_config_open_ondisk(&cfg, "config9"));
cl_git_mkfile("config9.lock", "[core]\n");
cl_git_fail_with(git_config_set_string(cfg, "core.dump", "boom"), GIT_ELOCKED);
git_config_free(cfg);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment