Commit 6be368bf16c86380ea84d7e39b65e0ebd9606174

Russell Belfer 2013-04-22T16:24:53

Clear repo config cache when cfgs are set This is a conservative change, but it seemed like the only safe thing to do -- i.e. clear the cvar cache when a config gets set.

diff --git a/src/config.c b/src/config.c
index cb9d401..3c0bbe9 100644
--- a/src/config.c
+++ b/src/config.c
@@ -363,6 +363,7 @@ int git_config_set_bool(git_config *cfg, const char *name, int value)
 
 int git_config_set_string(git_config *cfg, const char *name, const char *value)
 {
+	int error;
 	git_config_backend *file;
 	file_internal *internal;
 
@@ -374,7 +375,12 @@ int git_config_set_string(git_config *cfg, const char *name, const char *value)
 	internal = git_vector_get(&cfg->files, 0);
 	file = internal->file;
 
-	return file->set(file, name, value);
+	error = file->set(file, name, value);
+
+	if (!error && GIT_REFCOUNT_OWNER(cfg) != NULL)
+		git_repository__cvar_cache_clear(GIT_REFCOUNT_OWNER(cfg));
+
+	return error;
 }
 
 /***********