GCond: check result of pthread_condattr_setclock()
authorRyan Lortie <desrt@desrt.ca>
Fri, 21 Feb 2014 21:40:16 +0000 (16:40 -0500)
committerRyan Lortie <desrt@desrt.ca>
Fri, 21 Feb 2014 21:42:21 +0000 (16:42 -0500)
Make sure this call succeeds, aborting if it doesn't

This will prevent people from having to waste time chasing down the problems
that would otherwise be caused by this silent failure.

glib/gthread-posix.c

index 4a01f4d..c98c2d8 100644 (file)
@@ -639,8 +639,13 @@ g_cond_impl_new (void)
   gint status;
 
   pthread_condattr_init (&attr);
-#if defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC)
-  pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
+
+#ifdef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP
+#elif defined (HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined (CLOCK_MONOTONIC)
+  if G_UNLIKELY ((status = pthread_condattr_setclock (&attr, CLOCK_MONOTONIC)) != 0)
+    g_thread_abort (status, "pthread_condattr_setclock");
+#else
+#error Cannot support GCond on your platform.
 #endif
 
   cond = malloc (sizeof (pthread_cond_t));