summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud@urkud.name>2015-02-05 23:39:59 +0300
committerCarlos Martín Nieto <cmn@dwim.me>2015-03-21 21:12:09 +0100
commit277d64773ec60dc77b0cdef88360a618fb0047f2 (patch)
treeb5a03c9d12bcd498c0609bcab81662c36e66a0cc
parent3bdcea885c7899cfdfc14aa299529acd47f21ad1 (diff)
downloadlibgit2-277d64773ec60dc77b0cdef88360a618fb0047f2.tar.gz
Reinit `reader` pointer after reading included config file
Fixes #2869. If included file includes more files, it may reallocate cfg_file->readers, hence invalidate not only `r` pointer, but `result` pointer as well.
-rw-r--r--src/config_file.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 4f041e7e3..268cced09 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -1284,6 +1284,7 @@ static int config_parse(git_strmap *values, diskfile_backend *cfg_file, struct r
if (result == 0) {
result = config_parse(values, cfg_file, r, level, depth+1);
r = git_array_get(cfg_file->readers, index);
+ reader = git_array_get(cfg_file->readers, reader_idx);
}
else if (result == GIT_ENOTFOUND) {
giterr_clear();