From 629aa42eece53583ffb4994c0f79fb7c5a7872ef Mon Sep 17 00:00:00 2001 From: kichik Date: Sat, 11 Mar 2006 17:34:20 +0000 Subject: [PATCH] fix for WaitForSingleObject POSIX implementation by codesquid git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4574 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/clzma.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Source/clzma.cpp b/Source/clzma.cpp index 89142e99..6116150c 100644 --- a/Source/clzma.cpp +++ b/Source/clzma.cpp @@ -73,18 +73,17 @@ BOOL CloseHandle(HANDLE _event) DWORD WaitForSingleObject(HANDLE _event, DWORD) { DWORD ret = WAIT_OBJECT_0; evnet_t *event = (evnet_t *) _event; + if (pthread_mutex_lock(&event->mutex)) + return !WAIT_OBJECT_0; if (!event->signaled) { - pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; - if (pthread_mutex_lock(&m) || pthread_cond_wait(&event->cond, &m)) + if (pthread_cond_wait(&event->cond, &event->mutex)) { ret = !WAIT_OBJECT_0; } - pthread_mutex_unlock(&m); - pthread_mutex_destroy(&m); } - if (!ResetEvent(_event)) - return !WAIT_OBJECT_0; + event->signaled = false; + pthread_mutex_unlock(&event->mutex); return ret; }