]> sourceware.org Git - lvm2.git/commitdiff
str_list: add str_list_destroy function
authorPeter Rajnoha <prajnoha@redhat.com>
Tue, 20 Oct 2015 14:12:16 +0000 (16:12 +0200)
committerPeter Rajnoha <prajnoha@redhat.com>
Fri, 30 Oct 2015 14:47:56 +0000 (15:47 +0100)
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.

lib/datastruct/str_list.c
lib/datastruct/str_list.h

index a600f607e71d61c2509d7ba70c68e503ab113af3..73b5534a07ced43b0e0d1061a6541f7fd0d3c2c1 100644 (file)
@@ -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);
+}
index 268a3cf75f3f408ef7543f00c4e3ce924bf92ba9..92ff8c5ea51114f98d7d4c0c2865de53feb6e18f 100644 (file)
@@ -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
This page took 0.029868 seconds and 5 git commands to generate.