From 539ae204665ec2e265e1639ad4dde69941a14f0c Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Mon, 19 Aug 2013 10:51:18 +0200 Subject: Fixed timed event wait on Linux. Was causing an error message and the DeadlockDetect didn't work. --- source/OSSupport/Event.cpp | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/source/OSSupport/Event.cpp b/source/OSSupport/Event.cpp index f3c9053b1..9348384b0 100644 --- a/source/OSSupport/Event.cpp +++ b/source/OSSupport/Event.cpp @@ -144,24 +144,19 @@ cEvent::eWaitResult cEvent::Wait(int a_TimeoutMilliSec) timeout.tv_sec = a_TimeoutMilliSec / 1000; timeout.tv_nsec = (a_TimeoutMilliSec % 1000) * 1000000; int res = sem_timedwait(m_Event, &timeout); - switch (res) + if (res == 0) { - case 0: - { - // The semaphore was signalled - return wrSignalled; - } - case ETIMEDOUT: - { - // The timeout was hit - return wrTimeout; - } - default: - { - LOGWARNING("cEvent: timed-waiting for the event failed: %i, errno = %i. Continuing, but server may be unstable.", res, errno); - return wrError; - } + // The semaphore was signalled + return wrSignalled; + } + int err = errno; + if (err == ETIMEDOUT) + { + // The timeout was hit + return wrTimeout; } + LOGWARNING("cEvent: timed-waiting for the event failed: %i, errno = %i. Continuing, but server may be unstable.", res, err); + return wrError; #endif } -- cgit v1.2.3