diff --git a/src/libstrongswan/collections/blocking_queue.c b/src/libstrongswan/collections/blocking_queue.c index 40f65a930..0280ce4ab 100644 --- a/src/libstrongswan/collections/blocking_queue.c +++ b/src/libstrongswan/collections/blocking_queue.c @@ -97,10 +97,19 @@ METHOD(blocking_queue_t, destroy_offset, void, destroy(this); } +CALLBACK(destroy_item, void, + void *item, va_list args) +{ + void (*fn)(void*); + + VA_ARGS_VGET(args, fn); + fn(item); +} + METHOD(blocking_queue_t, destroy_function, void, private_blocking_queue_t *this, void (*fn)(void*)) { - this->list->invoke_function(this->list, (linked_list_invoke_t)fn); + this->list->invoke_function(this->list, destroy_item, fn); destroy(this); }