diff --git a/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf.h index 3bb8c6a..85ac01c 100644 --- a/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf.h @@ -242,6 +242,7 @@ pkgconf_tuple_t *pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_ char *pkgconf_tuple_find(const pkgconf_client_t *client, pkgconf_list_t *list, const char *key); char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *list, const char *value); void pkgconf_tuple_free(pkgconf_list_t *list); +void pkgconf_tuple_free_entry(pkgconf_tuple_t *tuple, pkgconf_list_t *list); void pkgconf_tuple_add_global(pkgconf_client_t *client, const char *key, const char *value); char *pkgconf_tuple_find_global(const pkgconf_client_t *client, const char *key); void pkgconf_tuple_free_global(pkgconf_client_t *client); diff --git a/libpkgconf/tuple.c b/libpkgconf/tuple.c index 8698f6b..6fbd0d6 100644 --- a/libpkgconf/tuple.c +++ b/libpkgconf/tuple.c @@ -155,17 +155,21 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const return strdup(buf); } +void +pkgconf_tuple_free_entry(pkgconf_tuple_t *tuple, pkgconf_list_t *list) +{ + pkgconf_node_delete(&tuple->iter, list); + + free(tuple->key); + free(tuple->value); + free(tuple); +} + void pkgconf_tuple_free(pkgconf_list_t *list) { pkgconf_node_t *node, *next; PKGCONF_FOREACH_LIST_ENTRY_SAFE(list->head, next, node) - { - pkgconf_tuple_t *tuple = node->data; - - free(tuple->key); - free(tuple->value); - free(tuple); - } + pkgconf_tuple_free_entry(node->data, list); }