static void
do_cothread_context_destroy (cothread_context *context)
{
- g_assert (g_thread_self() != context->main->thread);
+ g_assert (g_thread_self() == context->main->thread);
while (context->cothreads) {
do_cothread_destroy ((cothread *) context->cothreads->data);
}
+ g_mutex_unlock (context->mutex);
g_mutex_free (context->mutex);
g_free (context);
static void
die (cothread *to_die) {
g_cond_free (to_die->cond);
- g_slist_remove (to_die->context->cothreads, to_die);
+ to_die->context->cothreads = g_slist_remove (to_die->context->cothreads, to_die);
g_free (to_die);
g_thread_exit (to_die);
/* don't unlock the mutex here, the thread waiting for us to die is gonna take it */
return ret;
out2:
- g_slist_remove (context->cothreads, ret);
+ context->cothreads = g_slist_remove (context->cothreads, ret);
g_free (ret);
out1:
return NULL;