fix bogus lazy allocation in ctermid and missing malloc failure check
[musl] / src / thread / pthread_cond_init.c
index dc4fb98..71489bc 100644 (file)
@@ -1,8 +1,11 @@
 #include "pthread_impl.h"
 
-int pthread_cond_init(pthread_cond_t *c, const pthread_condattr_t *a)
+int pthread_cond_init(pthread_cond_t *restrict c, const pthread_condattr_t *restrict a)
 {
-       memset(c, 0, sizeof *c);
-       if (a) c->_c_clock = *a & 0x7fffffff;
+       *c = (pthread_cond_t){0};
+       if (a) {
+               c->_c_clock = *a & 0x7fffffff;
+               if (*a>>31) c->_c_mutex = (void *)-1;
+       }
        return 0;
 }