-2000-03-16 Ulrich Drepper <drepper@redhat.com>
-
- * mutex.c (__pthread_mutex_lock): Always initialize __m_owner.
- (__pthread_mutex_trylock): Likewise.
- (__pthread_mutex_unlock): Always clear __m_owner.
-
2000-03-14 Ulrich Drepper <drepper@redhat.com>
* condvar.c (pthread_cond_wait): Check whether mutex is owned by
switch(mutex->__m_kind) {
case PTHREAD_MUTEX_FAST_NP:
retcode = __pthread_trylock(&mutex->__m_lock);
- mutex->__m_owner = thread_self();
return retcode;
case PTHREAD_MUTEX_RECURSIVE_NP:
self = thread_self();
int __pthread_mutex_lock(pthread_mutex_t * mutex)
{
- pthread_descr self = thread_self();
+ pthread_descr self;
switch(mutex->__m_kind) {
case PTHREAD_MUTEX_FAST_NP:
__pthread_lock(&mutex->__m_lock, NULL);
- break;
+ return 0;
case PTHREAD_MUTEX_RECURSIVE_NP:
self = thread_self();
if (mutex->__m_owner == self) {
return 0;
}
__pthread_lock(&mutex->__m_lock, self);
+ mutex->__m_owner = self;
mutex->__m_count = 0;
- break;
+ return 0;
case PTHREAD_MUTEX_ERRORCHECK_NP:
self = thread_self();
if (mutex->__m_owner == self) return EDEADLK;
__pthread_lock(&mutex->__m_lock, self);
- break;
+ mutex->__m_owner = self;
+ return 0;
default:
return EINVAL;
}
- mutex->__m_owner = self;
- return 0;
}
strong_alias (__pthread_mutex_lock, pthread_mutex_lock)
switch (mutex->__m_kind) {
case PTHREAD_MUTEX_FAST_NP:
__pthread_unlock(&mutex->__m_lock);
- mutex->__m_owner = NULL;
return 0;
case PTHREAD_MUTEX_RECURSIVE_NP:
if (mutex->__m_count > 0) {