branch: More obvious semantics in `foreach`
diff --git a/src/branch.c b/src/branch.c
index 590cdc0..7064fa7 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -137,7 +137,7 @@ int git_branch_foreach(
if (git_reference_iterator_new(&iter, repo) < 0)
return -1;
- while (!error && (error = git_reference_next(&ref, iter)) == 0) {
+ while ((error = git_reference_next(&ref, iter)) == 0) {
if (list_flags & GIT_BRANCH_LOCAL &&
git__prefixcmp(ref->name, GIT_REFS_HEADS_DIR) == 0) {
if (callback(ref->name + strlen(GIT_REFS_HEADS_DIR),
@@ -155,6 +155,10 @@ int git_branch_foreach(
}
git_reference_free(ref);
+
+ /* check if the callback has cancelled iteration */
+ if (error == GIT_EUSER)
+ break;
}
if (error == GIT_ITEROVER)