]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Fixes #1687 by extra semaphore retval handle code for OSX
authorPavel Puchkin <i@neoascetic.me>
Mon, 8 Dec 2014 09:41:29 +0000 (11:41 +0200)
committerCraig Robbins <kde.psych@gmail.com>
Sun, 14 Dec 2014 16:12:39 +0000 (02:12 +1000)
See https://github.com/minetest/minetest/issues/1687#issuecomment-56830173

Signed-off-by: Craig Robbins <kde.psych@gmail.com>
src/jthread/pthread/jsemaphore.cpp

index 609e2f518f47609614c50491db3f64379ed6731c..16e001e9264eb59ff90b8453665beb88443bf3bd 100644 (file)
@@ -115,6 +115,13 @@ bool JSemaphore::Wait(unsigned int time_ms) {
        errno = 0;
 #ifdef __MACH__
        int sem_wait_retval = semaphore_timedwait(m_semaphore, waittime);
+       if (sem_wait_retval == KERN_OPERATION_TIMED_OUT) {
+               errno = ETIMEDOUT;
+       } else if (sem_wait_retval == KERN_ABORTED) {
+               errno = EINTR;
+       } else if (sem_wait_retval != 0) {
+               errno = EINVAL;
+       }
 #else
        int sem_wait_retval = sem_timedwait(&m_semaphore, &waittime);
 #endif