summaryrefslogtreecommitdiff
path: root/src/diff_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/diff_driver.c')
-rw-r--r--src/diff_driver.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/diff_driver.c b/src/diff_driver.c
index 8136e0dd9..6e87fd6f8 100644
--- a/src/diff_driver.c
+++ b/src/diff_driver.c
@@ -219,7 +219,7 @@ static int git_diff_driver_load(
git_diff_driver *drv = NULL;
size_t namelen = strlen(driver_name);
khiter_t pos;
- git_config *cfg;
+ git_config *cfg, *repo_cfg;
git_buf name = GIT_BUF_INIT;
const git_config_entry *ce;
bool found_driver = false;
@@ -234,11 +234,14 @@ static int git_diff_driver_load(
}
/* if you can't read config for repo, just use default driver */
- if (git_repository_config__weakptr(&cfg, repo) < 0) {
+ if (git_repository_config__weakptr(&repo_cfg, repo) < 0) {
giterr_clear();
goto done;
}
+ if ((error = git_config_snapshot(&cfg, repo_cfg)) < 0)
+ return error;
+
drv = git__calloc(1, sizeof(git_diff_driver) + namelen + 1);
GITERR_CHECK_ALLOC(drv);
drv->type = DIFF_DRIVER_AUTO;
@@ -321,6 +324,7 @@ static int git_diff_driver_load(
done:
git_buf_free(&name);
+ git_config_free(cfg);
if (!*out) {
int error2 = git_diff_driver_builtin(out, reg, driver_name);