summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Rogers <alanjrogers@me.com>2014-10-21 09:29:45 +1100
committerAlan Rogers <alanjrogers@me.com>2014-10-23 15:21:30 +1100
commitad5adacb1d1913620f022d7bb6c9b877ff3a4faf (patch)
tree524a458a3f73de054f9558d4443b76f44dd41908
parent1e2fe921a5fc8ad8188b69956179703f10d0a4ad (diff)
downloadlibgit2-refresh-config-snapshot.tar.gz
Patch from @carlosmn to refresh the parent config before snapshotting.refresh-config-snapshot
-rw-r--r--src/config_file.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 8f55c42f3..1f73e7e11 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -767,12 +767,17 @@ static int config_readonly_open(git_config_backend *cfg, git_config_level_t leve
{
diskfile_readonly_backend *b = (diskfile_readonly_backend *) cfg;
diskfile_backend *src = b->snapshot_from;
+ diskfile_header *src_header = &src->header;
refcounted_strmap *src_map;
+ int error;
+
+ if (!src_header->readonly && (error = config_refresh(&src_header->parent)) < 0)
+ return error;
/* We're just copying data, don't care about the level */
GIT_UNUSED(level);
- src_map = refcounted_strmap_take(&src->header);
+ src_map = refcounted_strmap_take(src_header);
b->header.values = src_map;
return 0;