From a40646e30d85e51a76fb620822d4d921b6802157 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Tue, 1 Jun 2021 11:22:22 +1200 Subject: [PATCH] Fix error handling in replacement pthread_barrier_init(). Commit 44bf3d50 incorrectly used an errno-style interface when supplying missing pthread functionality (i.e. on macOS), but it should check for and return error numbers directly. --- src/port/pthread_barrier_wait.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/port/pthread_barrier_wait.c b/src/port/pthread_barrier_wait.c index 7ca8e2ce0be..8282cc5b89d 100644 --- a/src/port/pthread_barrier_wait.c +++ b/src/port/pthread_barrier_wait.c @@ -18,19 +18,17 @@ int pthread_barrier_init(pthread_barrier_t *barrier, const void *attr, int count) { + int error; + barrier->sense = false; barrier->count = count; barrier->arrived = 0; - if (pthread_cond_init(&barrier->cond, NULL) < 0) - return -1; - if (pthread_mutex_init(&barrier->mutex, NULL) < 0) + if ((error = pthread_cond_init(&barrier->cond, NULL)) != 0) + return error; + if ((error = pthread_mutex_init(&barrier->mutex, NULL)) != 0) { - int save_errno = errno; - pthread_cond_destroy(&barrier->cond); - errno = save_errno; - - return -1; + return error; } return 0;