From 09c2f91c150a4862c9189d9e08d0dc111d4d706c Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Mon, 17 Jun 2013 18:48:02 +0200 Subject: [PATCH] branch: More obvious semantics in `foreach` --- src/branch.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/branch.c b/src/branch.c index 590cdc027..7064fa7fc 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)