From 98a3318e3710973b79acb6f8733169ea5ea35e4a Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 6 Feb 2015 12:18:38 +0000 Subject: Fully initialize allocated memory for the new barrier. The b_destroying member was left uninitialized, which caused spurious EBUSY. PR: 197365 Noted by: Florent Guiliani Sponsored by: The FreeBSD Foundation MFC after: 1 week --- lib/libthr/thread/thr_barrier.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'lib/libthr/thread/thr_barrier.c') diff --git a/lib/libthr/thread/thr_barrier.c b/lib/libthr/thread/thr_barrier.c index 86f880e..10b6346 100644 --- a/lib/libthr/thread/thr_barrier.c +++ b/lib/libthr/thread/thr_barrier.c @@ -86,16 +86,13 @@ _pthread_barrier_init(pthread_barrier_t *barrier, if (barrier == NULL || count <= 0) return (EINVAL); - bar = malloc(sizeof(struct pthread_barrier)); + bar = calloc(1, sizeof(struct pthread_barrier)); if (bar == NULL) return (ENOMEM); _thr_umutex_init(&bar->b_lock); _thr_ucond_init(&bar->b_cv); - bar->b_cycle = 0; - bar->b_waiters = 0; bar->b_count = count; - bar->b_refcount = 0; *barrier = bar; return (0); -- cgit v1.1