Fix iterator check and return value There is a little cleanup necessary from PR #843. Since the new callbacks return `GIT_EUSER` we have to be a little careful about return values when they are used internally to the library. Also, callbacks should be checked for non-zero return values, not just less than zero.
diff --git a/src/remote.c b/src/remote.c
index a90c8a7..fc1a2ec 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -420,7 +420,7 @@ int git_remote_ls(git_remote *remote, git_headlist_cb list_cb, void *payload)
pkt = (git_pkt_ref *)p;
- if (list_cb(&pkt->head, payload) < 0)
+ if (list_cb(&pkt->head, payload))
return GIT_EUSER;
}
@@ -596,6 +596,11 @@ int git_remote_list(git_strarray *remotes_list, git_repository *repo)
}
git_vector_free(&list);
+
+ /* cb error is converted to GIT_EUSER by git_config_foreach */
+ if (error == GIT_EUSER)
+ error = -1;
+
return error;
}