diff options
Diffstat (limited to 'common/array.c')
-rw-r--r-- | common/array.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/common/array.c b/common/array.c index f2930a9..9802100 100644 --- a/common/array.c +++ b/common/array.c @@ -81,16 +81,10 @@ p11_array_new (p11_destroyer destroyer) void p11_array_free (p11_array *array) { - unsigned int i; - if (array == NULL) return; - if (array->destroyer) { - for (i = 0; i < array->num; i++) - (array->destroyer) (array->elem[i]); - } - + p11_array_clear (array); free (array->elem); free (array); } @@ -117,3 +111,16 @@ p11_array_remove (p11_array *array, (array->num - (index + 1)) * sizeof (void*)); array->num--; } + +void +p11_array_clear (p11_array *array) +{ + int i; + + if (array->destroyer) { + for (i = 0; i < array->num; i++) + (array->destroyer) (array->elem[i]); + } + + array->num = 0; +} |