From defc12c1bc49b4fef3e0a2aabc803badebd96515 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Fri, 6 Apr 2012 23:07:22 +0200 Subject: [PATCH] The waiter for a barrier must check both that it was signaled and that the barrier is enabled. --- src/c/threads/barrier.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/c/threads/barrier.d b/src/c/threads/barrier.d index a57549890..68a43f9a5 100644 --- a/src/c/threads/barrier.d +++ b/src/c/threads/barrier.d @@ -104,8 +104,12 @@ static cl_object barrier_wait_condition(cl_env_ptr env, cl_object barrier) { cl_object output; + /* We were signaled */ if (env->own_process->process.waiting_for != barrier) return Ct; + /* Disabled barrier */ + else if (barrier->barrier.arrivers_count < 0) + return Ct; else return Cnil; }