From fe319b558aecb3bd7ec28a2d30d618ba36515123 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Wed, 21 May 2014 11:36:19 +0300 Subject: [PATCH] dynarray: Add pa_dynarray_remove_all() Change-Id: I35079f8fe4b361221a1bdc1fececbe318bf3ee0e Signed-off-by: Jaska Uimonen --- src/pulsecore/dynarray.c | 13 ++++++++----- src/pulsecore/dynarray.h | 2 ++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pulsecore/dynarray.c b/src/pulsecore/dynarray.c index c0b5fb0..6dba743 100644 --- a/src/pulsecore/dynarray.c +++ b/src/pulsecore/dynarray.c @@ -47,13 +47,9 @@ pa_dynarray* pa_dynarray_new(pa_free_cb_t free_cb) { } void pa_dynarray_free(pa_dynarray *array) { - unsigned i; pa_assert(array); - if (array->free_cb) - for (i = 0; i < array->n_entries; i++) - array->free_cb(array->data[i]); - + pa_dynarray_remove_all(array); pa_xfree(array->data); pa_xfree(array); } @@ -105,6 +101,13 @@ void *pa_dynarray_steal_last(pa_dynarray *array) { return NULL; } +void pa_dynarray_remove_all(pa_dynarray *array) { + pa_assert(array); + + while (array->n_entries > 0) + pa_dynarray_remove_last(array); +} + unsigned pa_dynarray_size(pa_dynarray *array) { pa_assert(array); diff --git a/src/pulsecore/dynarray.h b/src/pulsecore/dynarray.h index fd91433..439f181 100644 --- a/src/pulsecore/dynarray.h +++ b/src/pulsecore/dynarray.h @@ -58,6 +58,8 @@ int pa_dynarray_remove_last(pa_dynarray *array); /* Returns the removed item, or NULL if the array is empty. */ void *pa_dynarray_steal_last(pa_dynarray *array); +void pa_dynarray_remove_all(pa_dynarray *array); + unsigned pa_dynarray_size(pa_dynarray *array); void * const *pa_dynarray_get_raw_array(pa_dynarray *array); -- 2.7.4