diff options
Diffstat (limited to 'linuxthreads/condvar.c')
-rw-r--r-- | linuxthreads/condvar.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/linuxthreads/condvar.c b/linuxthreads/condvar.c index d1e91d228c..023e5c6884 100644 --- a/linuxthreads/condvar.c +++ b/linuxthreads/condvar.c @@ -143,6 +143,10 @@ pthread_cond_timedwait_relative_old(pthread_cond_t *cond, sigjmp_buf jmpbuf; pthread_extricate_if extr; + /* Check whether the mutex is locked and owned by this thread. */ + if (mutex->__m_owner != self) + return EINVAL; + /* Set up extrication interface */ extr.pu_object = cond; extr.pu_extricate_func = cond_extricate_func; @@ -270,6 +274,10 @@ pthread_cond_timedwait_relative_new(pthread_cond_t *cond, sigjmp_buf jmpbuf; pthread_extricate_if extr; + /* Check whether the mutex is locked and owned by this thread. */ + if (mutex->__m_owner != self) + return EINVAL; + already_canceled = 0; was_signalled = 0; @@ -384,10 +392,6 @@ pthread_cond_timedwait_relative_new(pthread_cond_t *cond, int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec * abstime) { - /* Check whether the mutex is locked and owned by this thread. */ - if (mutex->__m_owner != self) - return EINVAL; - /* Indirect call through pointer! */ return pthread_cond_tw_rel(cond, mutex, abstime); } |