about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/thread/pthread_mutex_trylock.c2
-rw-r--r--src/thread/pthread_mutex_unlock.c4
2 files changed, 2 insertions, 4 deletions
diff --git a/src/thread/pthread_mutex_trylock.c b/src/thread/pthread_mutex_trylock.c
index 4a424bc9..fb277970 100644
--- a/src/thread/pthread_mutex_trylock.c
+++ b/src/thread/pthread_mutex_trylock.c
@@ -30,8 +30,6 @@ int pthread_mutex_trylock(pthread_mutex_t *m)
 	if ((own && !(own & 0x40000000)) || a_cas(&m->_m_lock, old, tid)!=old)
 		return EBUSY;
 
-	m->_m_count = 1;
-
 	if (m->_m_type < 4) return 0;
 
 	if (m->_m_type >= 8) {
diff --git a/src/thread/pthread_mutex_unlock.c b/src/thread/pthread_mutex_unlock.c
index 0f4a5e6c..05baec18 100644
--- a/src/thread/pthread_mutex_unlock.c
+++ b/src/thread/pthread_mutex_unlock.c
@@ -12,8 +12,8 @@ int pthread_mutex_unlock(pthread_mutex_t *m)
 		self = __pthread_self();
 		if ((m->_m_lock&0x1fffffff) != self->tid)
 			return EPERM;
-		if ((m->_m_type&3) == PTHREAD_MUTEX_RECURSIVE && --m->_m_count)
-			return 0;
+		if ((m->_m_type&3) == PTHREAD_MUTEX_RECURSIVE && m->_m_count)
+			return m->_m_count--, 0;
 		if (m->_m_type >= 4) {
 			self->robust_list.pending = &m->_m_next;
 			*(void **)m->_m_prev = m->_m_next;