Commit 1713653883c3dfd199a18b51a1e2b37def183101

Yury G. Kudryashov 2015-02-05T23:39:59

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.

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/src/config_file.c b/src/config_file.c
index 4f041e7..268cced 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();