diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2015-10-20 16:12:16 +0200 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2015-10-30 15:47:56 +0100 |
commit | 77605457e7cf550364355b03cb5544b57d3c046d (patch) | |
tree | e08ed013695eacce6f31055b8d9faae874460a18 | |
parent | 0d5b1294f0350e10698232eb764c28b3ca54df1a (diff) | |
download | lvm2-77605457e7cf550364355b03cb5544b57d3c046d.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 |