Commit 84fec6f628b8c82a70c0aff5dc6a47d1cdb6fbf0

Carlos Martín Nieto 2013-08-08T13:14:35

config: saner iterator errors Really report an error in foreach if we fail to allocate the iterator, and don't fail if the config is emtpy.

diff --git a/src/config.c b/src/config.c
index 2f800a8..6c055e0 100644
--- a/src/config.c
+++ b/src/config.c
@@ -340,8 +340,10 @@ int git_config_backend_foreach_match(
 		}
 	}
 
-	if (backend->iterator_new(&iter, backend) < 0)
-		return 0;
+	if ((result = backend->iterator_new(&iter, backend)) < 0) {
+		iter = NULL;
+		return -1;
+	}
 
 	while(!(backend->next(&entry, iter) < 0)) {
 		/* skip non-matching keys if regexp was provided */
diff --git a/src/config_file.c b/src/config_file.c
index 849ef0f..6eb51ac 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -261,9 +261,6 @@ static int config_iterator_new(
 	diskfile_backend *b = (diskfile_backend *)backend;
 	git_config_file_iter *it = git__calloc(1, sizeof(git_config_file_iter));
 
-	if (!b->values || git_strmap_num_entries(b->values) < 1)
-		return -1;
-
 	GITERR_CHECK_ALLOC(it);
 
 	it->parent.backend = backend;