yaz_cond_create returns 0 if threads is unavail
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 19 May 2010 13:14:43 +0000 (15:14 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 19 May 2010 13:14:43 +0000 (15:14 +0200)
src/condvar.c
test/test_mutex.c

index e6292bd..19291d4 100644 (file)
@@ -48,11 +48,14 @@ struct yaz_cond {
 
 void yaz_cond_create(YAZ_COND *p)
 {
 
 void yaz_cond_create(YAZ_COND *p)
 {
-    *p = (YAZ_COND) malloc(sizeof(**p));
 #ifdef WIN32
 #ifdef WIN32
+    *p = (YAZ_COND) malloc(sizeof(**p));
     InitializeConditionVariable(&(*p)->cond);
 #elif YAZ_POSIX_THREADS
     InitializeConditionVariable(&(*p)->cond);
 #elif YAZ_POSIX_THREADS
+    *p = (YAZ_COND) malloc(sizeof(**p));
     pthread_cond_init(&(*p)->cond, 0);
     pthread_cond_init(&(*p)->cond, 0);
+#else
+    *p = 0;
 #endif
 }
 
 #endif
 }
 
index 6a0b9f1..a4483fc 100644 (file)
@@ -54,18 +54,17 @@ static void tst_cond(void)
         return;
 
     yaz_cond_create(&c);
         return;
 
     yaz_cond_create(&c);
-    YAZ_CHECK(c);
-    if (!c)
-        return;
-
-    r = yaz_gettimeofday(&abstime);
-    YAZ_CHECK_EQ(r, 0);
-    
-    abstime.tv_sec += 1; /* wait 1 second */
-    
-    r = yaz_cond_wait(c, p, &abstime);
-    YAZ_CHECK(r != 0);
-
+    if (c)
+    {
+        r = yaz_gettimeofday(&abstime);
+        YAZ_CHECK_EQ(r, 0);
+        
+        abstime.tv_sec += 1; /* wait 1 second */
+        
+        r = yaz_cond_wait(c, p, &abstime);
+        YAZ_CHECK(r != 0);
+
+    }
     yaz_cond_destroy(&c);
     YAZ_CHECK(c == 0);
     yaz_mutex_destroy(&p);
     yaz_cond_destroy(&c);
     YAZ_CHECK(c == 0);
     yaz_mutex_destroy(&p);