diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2015-10-20 16:12:16 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2015-10-23 16:03:27 +0200 |
commit | 1cb75faa40077720b6c8f243fc2d3da03da13e6e (patch) | |
tree | 35fee3891359bb9c36c8a628d1f2f9cc02ce5c8f | |
parent | 642d4cef6192301a09c291d3645ec29f36cee042 (diff) | |
download | lvm2-1cb75faa40077720b6c8f243fc2d3da03da13e6e.tar.gz |
str_list: add str_list_destroy function
The str_list_destroy function may be called to cleanup memory when
the list is not used anymore and the list itself was not allocated
from the memory pool.
-rw-r--r-- | lib/datastruct/str_list.c | 13 | ||||
-rw-r--r-- | lib/datastruct/str_list.h | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/datastruct/str_list.c b/lib/datastruct/str_list.c index a600f607e..73b5534a0 100644 --- a/lib/datastruct/str_list.c +++ b/lib/datastruct/str_list.c @@ -247,3 +247,16 @@ bad: dm_pool_free(mem, list); return NULL; } + +void str_list_destroy(struct dm_list *list, int deallocate_strings) +{ + struct dm_str_list *sl, *tmp_sl; + + dm_list_iterate_items_safe(sl, tmp_sl, list) { + dm_list_del(&sl->list); + if (deallocate_strings) + dm_free((char *)sl->str); + dm_free(sl); + } + dm_free(list); +} diff --git a/lib/datastruct/str_list.h b/lib/datastruct/str_list.h index 268a3cf75..92ff8c5ea 100644 --- a/lib/datastruct/str_list.h +++ b/lib/datastruct/str_list.h @@ -32,5 +32,7 @@ int str_list_dup(struct dm_pool *mem, struct dm_list *sllnew, const struct dm_list *sllold); char *str_list_to_str(struct dm_pool *mem, const struct dm_list *list, const char *delim); struct dm_list *str_to_str_list(struct dm_pool *mem, const char *str, const char *delim, int ignore_multiple_delim); +/* Only for lists which were *not* allocated from the mem pool! */ +void str_list_destroy(struct dm_list *list, int deallocate_strings); #endif |