summaryrefslogtreecommitdiff
path: root/src/config_file.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2011-06-16 20:22:05 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2011-06-16 20:22:05 +0200
commitb2e361cc5e5965d01ef4c033a14ecb61c8523dae (patch)
treeb356917d4f6551d6614d6e2cc50a5a5d8c4e09fa /src/config_file.c
parentd144c569f372aace4b71e595cb541111730edce4 (diff)
downloadlibgit2-b2e361cc5e5965d01ef4c033a14ecb61c8523dae.tar.gz
Plug two leaks in config writing
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Diffstat (limited to 'src/config_file.c')
-rw-r--r--src/config_file.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 916b4d081..519936124 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -986,10 +986,19 @@ static int config_write(diskfile_backend *cfg, cvar_t *var)
break;
}
} else {
+ int cmp;
+
pre_end = cfg->reader.read_ptr;
error = parse_variable(cfg, &var_name, &var_value);
- if (error < GIT_SUCCESS || strcasecmp(var->name, var_name))
+ if (error == GIT_SUCCESS)
+ cmp = strcasecmp(var->name, var_name);
+
+ free(var_name);
+ free(var_value);
+
+ if (error < GIT_SUCCESS || cmp)
break;
+
post_start = cfg->reader.read_ptr;
}
@@ -1060,6 +1069,7 @@ static int config_write(diskfile_backend *cfg, cvar_t *var)
else
error = git_filebuf_commit(&file);
+ gitfo_free_buf(&cfg->reader.buffer);
return error;
}