diff options
author | Stef Walter <stefw@gnome.org> | 2013-01-18 16:11:06 +0100 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2013-02-05 14:54:53 +0100 |
commit | 5e4a3ea9b8f254d99544490eed8e17e88c81f975 (patch) | |
tree | 91043d4d317195cf2d80aa572cab75d22dbd8f5e /common/array.c | |
parent | 4400d8ecc4525cfc848937dc562c542fc58a533a (diff) |
Add p11_array_clear() function
* Clears an array without freeing the array itself
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; +} |