X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fconfig.cc;h=6993e67f5ba4fdc59a25150926cdce84b49f34b0;hb=793d4305d3563082761a59ac418ce827d00bdc39;hp=e6b660a9e65c163307aa4c28c7d2246e2d2b5b86;hpb=8aeba1228ace947c1b689ae6ae08db5d53755917;p=notmuch diff --git a/lib/config.cc b/lib/config.cc index e6b660a9..6993e67f 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -338,7 +338,7 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch, GKeyFile *file) { notmuch_status_t status = NOTMUCH_STATUS_SUCCESS; - gchar **groups, **keys, *val; + gchar **groups = NULL, **keys, *val; if (notmuch->config == NULL) notmuch->config = _notmuch_string_map_create (notmuch); @@ -348,22 +348,29 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch, goto DONE; } - for (groups = g_key_file_get_groups (file, NULL); *groups; groups++) { - for (keys = g_key_file_get_keys (file, *groups, NULL, NULL); *keys; keys++) { - char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *groups, *keys); - val = g_key_file_get_value (file, *groups, *keys, NULL); + groups = g_key_file_get_groups (file, NULL); + for (gchar **grp = groups; *grp; grp++) { + keys = g_key_file_get_keys (file, *grp, NULL, NULL); + for (gchar **keys_p = keys; *keys_p; keys_p++) { + char *absolute_key = talloc_asprintf (notmuch, "%s.%s", *grp, *keys_p); + val = g_key_file_get_value (file, *grp, *keys_p, NULL); if (! val) { status = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } _notmuch_string_map_set (notmuch->config, absolute_key, val); + g_free (val); talloc_free (absolute_key); if (status) goto DONE; } + g_strfreev (keys); } DONE: + if (groups) + g_strfreev (groups); + return status; }