summaryrefslogtreecommitdiff
path: root/mutex.c
diff options
context:
space:
mode:
authorrpj <rpj>2001-12-20 15:23:01 +0000
committerrpj <rpj>2001-12-20 15:23:01 +0000
commit6f68e7b50e0bb837d02dc2cb8a7bc5887534d7b8 (patch)
tree04da814e68189b6479baa59f34500f6df63e6242 /mutex.c
parentc144e755b6008df26733c28905311a68b6b5afe5 (diff)
* mutex.c (pthread_mutex_lock): Decrementing lock_idx was
not thread-safe. (pthread_mutex_trylock): Likewise.
Diffstat (limited to 'mutex.c')
-rw-r--r--mutex.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mutex.c b/mutex.c
index 0009428..e62647e 100644
--- a/mutex.c
+++ b/mutex.c
@@ -650,7 +650,7 @@ pthread_mutex_lock(pthread_mutex_t *mutex)
if( mx->kind != PTHREAD_MUTEX_FAST_NP &&
pthread_equal( mx->ownerThread, pthread_self() ) )
{
- mx->lock_idx--;
+ (void) InterlockedDecrement( &mx->lock_idx );
if( mx->kind == PTHREAD_MUTEX_RECURSIVE_NP )
{
@@ -766,7 +766,7 @@ pthread_mutex_trylock(pthread_mutex_t *mutex)
}
else
{
- mx->lock_idx--;
+ (void) InterlockedDecrement( &mx->lock_idx );
result = EBUSY;
}
@@ -780,3 +780,4 @@ pthread_mutex_trylock(pthread_mutex_t *mutex)
return(result);
}
+