summaryrefslogtreecommitdiff
path: root/src/attr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/attr.c')
-rw-r--r--src/attr.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/attr.c b/src/attr.c
index 5cf96acf7..c02289363 100644
--- a/src/attr.c
+++ b/src/attr.c
@@ -347,6 +347,7 @@ static int collect_attr_files(
int git_attr_cache__init(git_repository *repo)
{
+ int ret;
git_attr_cache *cache = git_repository_attr_cache(repo);
git_config *cfg;
@@ -354,17 +355,18 @@ int git_attr_cache__init(git_repository *repo)
return 0;
/* cache config settings for attributes and ignores */
- if (git_repository_config(&cfg, repo) < 0)
+ if (git_repository_config__weakptr(&cfg, repo) < 0)
return -1;
- if (git_config_get_string(cfg, GIT_ATTR_CONFIG, &cache->cfg_attr_file)) {
- giterr_clear();
- cache->cfg_attr_file = NULL;
- }
- if (git_config_get_string(cfg, GIT_IGNORE_CONFIG, &cache->cfg_excl_file)) {
- giterr_clear();
- cache->cfg_excl_file = NULL;
- }
- git_config_free(cfg);
+
+ ret = git_config_get_string(cfg, GIT_ATTR_CONFIG, &cache->cfg_attr_file);
+ if (ret < 0 && ret != GIT_ENOTFOUND)
+ return ret;
+
+ ret = git_config_get_string(cfg, GIT_IGNORE_CONFIG, &cache->cfg_excl_file);
+ if (ret < 0 && ret != GIT_ENOTFOUND)
+ return ret;
+
+ giterr_clear();
/* allocate hashtable for attribute and ignore file contents */
if (cache->files == NULL) {