From d6a6cceb1fc636b44bc362238b508b7b5e00c64c Mon Sep 17 00:00:00 2001 From: Masanori Kakura Date: Sun, 4 Oct 2020 11:13:27 +0900 Subject: [PATCH] [eglib] Implement g_list_free_full(). --- src/glib.h | 2 ++ src/glist.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/glib.h b/src/glib.h index 4b2c6d6..d327a5f 100644 --- a/src/glib.h +++ b/src/glib.h @@ -389,6 +389,8 @@ GList *g_list_prepend (GList *list, gpointer data); void g_list_free (GList *list); void g_list_free_1 (GList *list); +void g_list_free_full (GList *list, + GDestroyNotify free_func); GList *g_list_copy (GList *list); guint g_list_length (GList *list); gint g_list_index (GList *list, diff --git a/src/glist.c b/src/glist.c index 882fda4..5d8123d 100644 --- a/src/glist.c +++ b/src/glist.c @@ -81,6 +81,17 @@ g_list_free (GList *list) } } +void +g_list_free_full (GList *list, GDestroyNotify free_func) +{ + while (list) { + GList *next = list->next; + (*free_func) (list->data); + g_list_free_1 (list); + list = next; + } +} + GList* g_list_append (GList *list, gpointer data) {