From de47eb59bb829423b1d0f47ba13099073999b3cb Mon Sep 17 00:00:00 2001 From: Nicolas Planel Date: Wed, 29 Oct 2003 16:07:11 +0000 Subject: Corporate Server 2.1.1 release --- mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c') diff --git a/mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c b/mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c index d3c2274f3..776e0adfc 100644 --- a/mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c +++ b/mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c @@ -10,14 +10,17 @@ int pthread_cond_broadcast(pthread_cond_t *cond) __THREAD_INIT(); + __NO_ASYNC_CANCEL_BEGIN; __pthread_lock(&(cond->lock)); - while ((tmp=cond->wait_chain)) { - cond->wait_chain=tmp->waitnext; + + for (tmp=cond->wait_chain;tmp;tmp=tmp->waitnext) { tmp->waitnext=0; tmp->waiting=0; } - __pthread_unlock(&(cond->lock)); + cond->wait_chain=0; + __pthread_unlock(&(cond->lock)); + __NO_ASYNC_CANCEL_STOP; return 0; } -- cgit v1.2.1