From f7b7853932113b817cdc1dbebe7694bfc45eeedb Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Fri, 9 Dec 2016 20:50:33 -0600 Subject: [PATCH] libpkgconf: tuple: add pkgconf_tuple_free_entry() to free a specific tuple node --- libpkgconf/libpkgconf.h | 1 + libpkgconf/tuple.c | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) 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); }