diff --git a/src/array.c b/src/array.c index cc23802bf..83863d1df 100644 --- a/src/array.c +++ b/src/array.c @@ -27,9 +27,10 @@ void array_alloc(struct array **a, array_dtor dtor) void array_free(struct array *array) { - int i=0; - for (i=0; iindex; i++){ - array->dtor(array->data[i]); + if (array->dtor != NULL) { + for (int i=0; iindex; i++){ + array->dtor(array->data[i]); + } } xfree(array->data); xfree(array); diff --git a/src/array.h b/src/array.h index 11a01b18a..dfaf4a6de 100644 --- a/src/array.h +++ b/src/array.h @@ -5,6 +5,7 @@ #ifndef __ARRAY_H__ #define __ARRAY_H__ struct array; +typedef struct array array_t; typedef void (*array_dtor)(void*); typedef int (*array_comp)(const void*, const void*); void array_alloc(struct array **array, array_dtor dtor);