config_file: honor error Return an error if we can't write an updated version of the config file after config_delete. Along with that, fix an uninitialized warning. Signed-off-by: schu <schu-github@schulog.org>
diff --git a/src/config_file.c b/src/config_file.c
index 207bd2b..afa917a 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -406,7 +406,8 @@ static int config_get(git_config_file *cfg, const char *name, const char **out)
static int config_delete(git_config_file *cfg, const char *name)
{
- cvar_t *iter, *prev;
+ int error;
+ cvar_t *iter, *prev = NULL;
diskfile_backend *b = (diskfile_backend *)cfg;
CVAR_LIST_FOREACH (&b->var_list, iter) {
@@ -419,9 +420,11 @@ static int config_delete(git_config_file *cfg, const char *name)
git__free(iter->value);
iter->value = NULL;
- config_write(b, iter);
+ error = config_write(b, iter);
cvar_free(iter);
- return GIT_SUCCESS;
+ return error == GIT_SUCCESS ?
+ GIT_SUCCESS :
+ git__rethrow(error, "Failed to update config file");
}
/* Store it for the next round */
prev = iter;