diff --git a/glib/glist.c b/glib/glist.c index 7f5df4471..1e3dd86c8 100644 --- a/glib/glist.c +++ b/glib/glist.c @@ -212,15 +212,10 @@ g_list_free_1 (GList *list) */ void g_list_free_full (GList *list, - GDestroyNotify free_func) + GDestroyNotify free_func) { - while (list) - { - GList *next = list->next; - (*free_func) (list->data); - _g_list_free1 (list); - list = next; - } + g_list_foreach (list, (GFunc) free_func, NULL); + g_list_free (list); } /** diff --git a/glib/gslist.c b/glib/gslist.c index 96ba579df..1de9c57e5 100644 --- a/glib/gslist.c +++ b/glib/gslist.c @@ -197,22 +197,17 @@ g_slist_free_1 (GSList *list) * @list: a pointer to a #GSList * @free_func: the function to be called to free each element's data * - * Convenience method, which frees all the memory used by a #GSList, - * and calls the specified destroy function on every element's data. + * Convenience method, which frees all the memory used by a #GSList, and + * calls the specified destroy function on every element's data. * * Since: 2.28 - */ + **/ void g_slist_free_full (GSList *list, - GDestroyNotify free_func) + GDestroyNotify free_func) { - while (list) - { - GSList *next = list->next; - (*free_func) (list->data); - _g_slist_free1 (list); - list = next; - } + g_slist_foreach (list, (GFunc) free_func, NULL); + g_slist_free (list); } /**