posix: don't segfault when calling ThreadsWait() without a valid thread
[deb_libcec.git] / src / lib / platform / posix / os-threads.h
index c37beed2bef14f5a0e998c30c953d43968210e2e..89f822b0dec300a89aee85d2f55e62871fac9080 100644 (file)
@@ -49,7 +49,14 @@ namespace PLATFORM
   inline struct timespec GetAbsTime(uint64_t iIncreaseBy = 0)
   {
     struct timespec now;
+    #ifdef __APPLE__
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+    now.tv_sec  = tv.tv_sec;
+    now.tv_nsec = tv.tv_usec * 1000;
+    #else
     clock_gettime(CLOCK_REALTIME, &now);
+    #endif
     now.tv_nsec += iIncreaseBy % 1000 * 1000000;
     now.tv_sec  += iIncreaseBy / 1000 + now.tv_nsec / 1000000000;
     now.tv_nsec %= 1000000000;
@@ -59,7 +66,7 @@ namespace PLATFORM
   typedef pthread_t thread_t;
 
   #define ThreadsCreate(thread, func, arg)         (pthread_create(&thread, NULL, (void *(*) (void *))func, (void *)arg) == 0)
-  #define ThreadsWait(thread, retval)              (pthread_join(thread, retval) == 0)
+  #define ThreadsWait(thread, retval)              (thread ? pthread_join(thread, retval) == 0 : true)
 
   typedef pthread_mutex_t mutex_t;
   #define MutexCreate(mutex)                       pthread_mutex_init(&mutex, GetRecursiveMutexAttribute());