MIPS: Throw OverflowException if Int32.MinValue is divided by -1
[mono.git] / mono / utils / mono-semaphore.c
index d65170cd46db8fefe1d85a682463f412a72b3ad8..55386ae557478a018b9b8dbd4a51d3f47124a862 100644 (file)
@@ -99,7 +99,10 @@ mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
                }
        }
 #endif
-       return (res != -1);
+       /* OSX might return > 0 for error */
+       if (res != 0)
+               res = -1;
+       return res;
 }
 
 int
@@ -115,6 +118,9 @@ mono_sem_wait (MonoSemType *sem, gboolean alertable)
                if (alertable)
                        return -1;
        }
+       /* OSX might return > 0 for error */
+       if (res != 0)
+               res = -1;
        return res;
 }
 
@@ -126,6 +132,9 @@ mono_sem_post (MonoSemType *sem)
        while ((res = sem_post (sem) == -1) && errno == EINTR);
 #else
        while ((res = semaphore_signal (*sem) == -1) && errno == EINTR);
+       /* OSX might return > 0 for error */
+       if (res != 0)
+               res = -1;
 #endif
        return res;
 }