summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2013-07-09 16:54:34 -0700
committerVicent Martí <vicent@github.com>2013-07-09 16:54:34 -0700
commit550cd2d776e6b14ab7bb48c98c8d28969cdcf1cb (patch)
treecbec4a13d1974bf2bce5eb34903f80f2ca568dc2 /src
parent3eae9467e59241f5af6218ca079f96273fe1bc57 (diff)
parente4fda954d6d914609498fc3bcbd27b4e2b5834d3 (diff)
downloadlibgit2-550cd2d776e6b14ab7bb48c98c8d28969cdcf1cb.tar.gz
Merge pull request #1716 from arrbee/fix-config-get-multivar
Fix git_config_get_multivar with interleaved missing entries
Diffstat (limited to 'src')
-rw-r--r--src/config.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/config.c b/src/config.c
index 068c40260..2a058549f 100644
--- a/src/config.c
+++ b/src/config.c
@@ -534,7 +534,7 @@ int git_config_get_multivar(
{
file_internal *internal;
git_config_backend *file;
- int ret = GIT_ENOTFOUND;
+ int ret = GIT_ENOTFOUND, err;
size_t i;
/*
@@ -547,9 +547,10 @@ int git_config_get_multivar(
continue;
file = internal->file;
- ret = file->get_multivar(file, name, regexp, cb, payload);
- if (ret < 0 && ret != GIT_ENOTFOUND)
- return ret;
+ if (!(err = file->get_multivar(file, name, regexp, cb, payload)))
+ ret = 0;
+ else if (err != GIT_ENOTFOUND)
+ return err;
}
return (ret == GIT_ENOTFOUND) ? config_error_notfound(name) : 0;