summaryrefslogtreecommitdiff
path: root/common/array.c
diff options
context:
space:
mode:
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;
+}