summaryrefslogtreecommitdiff
path: root/common/array.c
diff options
context:
space:
mode:
authorStef Walter <stefw@gnome.org>2013-01-18 16:11:06 +0100
committerStef Walter <stefw@gnome.org>2013-02-05 14:54:53 +0100
commit5e4a3ea9b8f254d99544490eed8e17e88c81f975 (patch)
tree91043d4d317195cf2d80aa572cab75d22dbd8f5e /common/array.c
parent4400d8ecc4525cfc848937dc562c542fc58a533a (diff)
downloadp11-kit-5e4a3ea9b8f254d99544490eed8e17e88c81f975.tar.gz
Add p11_array_clear() function
* Clears an array without freeing the array itself
Diffstat (limited to 'common/array.c')
-rw-r--r--common/array.c21
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;
+}