diff --git a/common/strlist.c b/common/strlist.c index 2ba0209f9..319d034e2 100644 --- a/common/strlist.c +++ b/common/strlist.c @@ -39,6 +39,7 @@ #include "common-defs.h" #include "strlist.h" #include "utf8conv.h" +#include "mischelp.h" void free_strlist( strlist_t sl ) @@ -52,6 +53,19 @@ free_strlist( strlist_t sl ) } +void +free_strlist_wipe (strlist_t sl) +{ + strlist_t sl2; + + for(; sl; sl = sl2 ) { + sl2 = sl->next; + wipememory (sl, sizeof *sl + strlen (sl->d)); + xfree(sl); + } +} + + /* Add STRING to the LIST at the front. This function terminates the process on memory shortage. */ strlist_t diff --git a/common/strlist.h b/common/strlist.h index 94dd32f05..45f5543a3 100644 --- a/common/strlist.h +++ b/common/strlist.h @@ -40,6 +40,8 @@ struct string_list typedef struct string_list *strlist_t; void free_strlist (strlist_t sl); +void free_strlist_wipe (strlist_t sl); + strlist_t add_to_strlist (strlist_t *list, const char *string); strlist_t add_to_strlist_try (strlist_t *list, const char *string);