diff -r c4041b07165e -r b5dd654deb3b src/array_list.c --- a/src/array_list.c Mon Mar 20 18:05:12 2023 +0100 +++ b/src/array_list.c Mon Mar 20 19:09:08 2023 +0100 @@ -310,15 +310,14 @@ switch (list->content_destructor_type) { case CX_DESTRUCTOR_SIMPLE: { for (size_t i = 0; i < list->size; i++) { - list->simple_destructor(ptr); + cx_list_invoke_simple_destructor(list, ptr); ptr += list->itemsize; } break; } case CX_DESTRUCTOR_ADVANCED: { for (size_t i = 0; i < list->size; i++) { - list->advanced_destructor.func(list->advanced_destructor.data, - ptr); + cx_list_invoke_advanced_destructor(list, ptr); ptr += list->itemsize; } break; @@ -326,6 +325,9 @@ case CX_DESTRUCTOR_NONE: break; // nothing } + + memset(arl->data, 0, list->size * list->itemsize); + list->size = 0; } static int cx_arl_swap(