summaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/config.c b/src/config.c
index 8b3a426ed..5477b04c8 100644
--- a/src/config.c
+++ b/src/config.c
@@ -507,9 +507,10 @@ int git_config_backend_foreach_match(
continue;
/* abort iterator on non-zero return value */
- error = GITERR_CALLBACK( cb(entry, payload) );
- if (error)
+ if ((error = cb(entry, payload)) != 0) {
+ GITERR_CALLBACK(error);
break;
+ }
}
if (regexp != NULL)
@@ -533,9 +534,12 @@ int git_config_foreach_match(
if ((error = git_config_iterator_glob_new(&iter, cfg, regexp)) < 0)
return error;
- while (!(error = git_config_next(&entry, iter)) &&
- !(error = GITERR_CALLBACK( cb(entry, payload) )))
- /* make callback on each config */;
+ while (!(error = git_config_next(&entry, iter))) {
+ if ((error = cb(entry, payload)) != 0) {
+ GITERR_CALLBACK(error);
+ break;
+ }
+ }
git_config_iterator_free(iter);
@@ -794,8 +798,10 @@ int git_config_get_multivar_foreach(
while ((err = iter->next(&entry, iter)) == 0) {
found = 1;
- if ((err = GITERR_CALLBACK( cb(entry, payload) )) != 0)
+ if ((err = cb(entry, payload)) != 0) {
+ GITERR_CALLBACK(err);
break;
+ }
}
iter->free(iter);