From cc472d0713842ccc5670a184980ac2c9485fb587 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 27 Feb 2014 18:01:47 -0800 Subject: [PATCH] Fix posix event mutex lock bug The mutex must be unlocked regardless of what the return value is or it will be locked forever if the return value isn't 0. --- libobs/util/threading-posix.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libobs/util/threading-posix.c b/libobs/util/threading-posix.c index 4ab53c594..8b15ddd50 100644 --- a/libobs/util/threading-posix.c +++ b/libobs/util/threading-posix.c @@ -109,24 +109,26 @@ int event_timedwait(event_t event, unsigned long milliseconds) if (code == 0) { if (!event->manual) event->signalled = false; - pthread_mutex_unlock(&event->mutex); } + pthread_mutex_unlock(&event->mutex); + return code; } int event_try(event_t event) { + int ret = EAGAIN; + pthread_mutex_lock(&event->mutex); if (event->signalled) { if (!event->manual) event->signalled = false; - pthread_mutex_unlock(&event->mutex); - return 0; + ret = 0; } pthread_mutex_unlock(&event->mutex); - return EAGAIN; + return ret; } int event_signal(event_t event)