Commit 83310ac93c89fc777a006097b06ef4f4df3a5396

Stefan Sperling 2020-03-20T18:43:58

fix bug where duplicates were returned from got_gitconfig_get_section_list()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/lib/gitconfig.c b/lib/gitconfig.c
index 5188ecb..69956c3 100644
--- a/lib/gitconfig.c
+++ b/lib/gitconfig.c
@@ -514,6 +514,15 @@ got_gitconfig_get_section_list(struct got_gitconfig_list **sections,
 	for (i = 0; i < nitems(conf->bindings); i++) {
 		for (cb = LIST_FIRST(&conf->bindings[i]); cb;
 		    cb = LIST_NEXT(cb, link)) {
+			int section_present = 0;
+			TAILQ_FOREACH(node, &list->fields, link) {
+				if (strcmp(node->field, cb->section) == 0) {
+					section_present = 1;
+					break;
+				}
+			}
+			if (section_present)
+				continue;
 			list->cnt++;
 			node = calloc(1, sizeof *node);
 			if (!node) {