summaryrefslogtreecommitdiff
path: root/src/config_file.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2013-08-08 16:59:39 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2013-08-08 16:59:39 +0200
commitcca5df6376fd41fb4fbbb9f8a9ff87c38079dfd5 (patch)
treed7e25181e8ba26300208757834788639478a4ec8 /src/config_file.c
parent3a7ffc29c9416c5d182835c7f18c04437366f218 (diff)
downloadlibgit2-cca5df6376fd41fb4fbbb9f8a9ff87c38079dfd5.tar.gz
config: hopefully get the iterator to work on multivars
Diffstat (limited to 'src/config_file.c')
-rw-r--r--src/config_file.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/config_file.c b/src/config_file.c
index 5559bd406..74b200073 100644
--- a/src/config_file.c
+++ b/src/config_file.c
@@ -433,7 +433,7 @@ static void foreach_iter_free(git_config_iterator *_iter)
git__free(iter);
}
-static int foreach_iter_next(git_config_entry **out, git_config_iterator *_iter)
+static int foreach_iter_next(git_config_entry *out, git_config_iterator *_iter)
{
foreach_iter *iter = (foreach_iter *) _iter;
@@ -443,7 +443,9 @@ static int foreach_iter_next(git_config_entry **out, git_config_iterator *_iter)
return GIT_ITEROVER;
if (!iter->have_regex) {
- *out = var->entry;
+ out->name = var->entry->name;
+ out->value = var->entry->value;
+
iter->var = var->next;
return 0;
}
@@ -453,7 +455,8 @@ static int foreach_iter_next(git_config_entry **out, git_config_iterator *_iter)
git_config_entry *entry = var->entry;
regex_t *regex = &iter->regex;;
if (regexec(regex, entry->value, 0, NULL, 0) == 0) {
- *out = entry;
+ out->name = entry->name;
+ out->value = entry->value;
return 0;
}
} while(var != NULL);