From 37c0175bd1127441a2662b96d0bbec5af2c6ae92 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 19 Jun 2009 00:45:08 +0200 Subject: [PATCH] fix crash on closing lumiera, in case of starting multiple threads --- src/backend/threads.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/threads.c b/src/backend/threads.c index 46449156b..67f2d4aa4 100644 --- a/src/backend/threads.c +++ b/src/backend/threads.c @@ -56,13 +56,14 @@ static void* pthread_runner (void* thread) pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL); struct lumiera_thread_mockup* starter = (struct lumiera_thread_mockup*) thread; + LumieraReccondition thread_end_notification = starter->finished; starter->fn (starter->arg); - if (!starter->finished) - return NULL; // no condition var provided for signalling thread termination - - LUMIERA_RECCONDITION_SECTION(cond_sync, starter->finished) + if (!thread_end_notification) + return NULL; // no signalling of thread termination desired + + LUMIERA_RECCONDITION_SECTION(cond_sync, thread_end_notification) LUMIERA_RECCONDITION_BROADCAST; return NULL;