correctly handle the degenerate barrier in the pshared case
[musl] / src / thread / pthread_barrier_wait.c
index db432ba..a97f6d5 100644 (file)
@@ -24,7 +24,7 @@ static int pshared_barrier_wait(pthread_barrier_t *b)
        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);
@@ -54,7 +54,7 @@ static int pshared_barrier_wait(pthread_barrier_t *b)
        
        __vm_unlock();
 
-       return 0;
+       return ret;
 }
 
 struct instance