From: Florian Dold Date: Tue, 28 Feb 2017 19:24:24 +0000 (+0100) Subject: allow destruction while iteration is active X-Git-Tag: taler-0.2.1~8^2~4 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4bf1d97b60faba3b75e0964678b3834bd859475f;p=oweals%2Fgnunet.git allow destruction while iteration is active --- diff --git a/src/set/set_api.c b/src/set/set_api.c index 5b5b1b8ee..04a4e4910 100644 --- a/src/set/set_api.c +++ b/src/set/set_api.c @@ -349,6 +349,9 @@ handle_iter_done (void *cls, set->iteration_id++; iter (set->iterator_cls, NULL); + + if (GNUNET_YES == set->destroy_requested) + GNUNET_SET_destroy (set); } @@ -733,8 +736,7 @@ GNUNET_SET_destroy (struct GNUNET_SET_Handle *set) /* destroying set while iterator is active is currently not supported; we should expand the API to allow clients to explicitly cancel the iteration! */ - GNUNET_assert (NULL == set->iterator); - if (NULL != set->ops_head) + if ( (NULL != set->ops_head) || (NULL != set->iterator) ) { LOG (GNUNET_ERROR_TYPE_DEBUG, "Set operations are pending, delaying set destruction\n");