correctly handle the degenerate barrier in the pshared case
authorRich Felker <dalias@aerifal.cx>
Wed, 28 Sep 2011 03:08:59 +0000 (23:08 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 28 Sep 2011 03:08:59 +0000 (23:08 -0400)
src/thread/pthread_barrier_wait.c

index 83c32ca..a97f6d5 100644 (file)
@@ -24,7 +24,7 @@ static int pshared_barrier_wait(pthread_barrier_t *b)
        int seq;
        int ret = 0;
 
        int seq;
        int ret = 0;
 
-       if (!limit) return PTHREAD_BARRIER_SERIAL_THREAD;
+       if (limit==1) return PTHREAD_BARRIER_SERIAL_THREAD;
 
        while (a_swap(&b->_b_lock, 1))
                __wait(&b->_b_lock, &b->_b_waiters, 1, 0);
 
        while (a_swap(&b->_b_lock, 1))
                __wait(&b->_b_lock, &b->_b_waiters, 1, 0);