summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--mutex.c5
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e27f6a..2f71846 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-12-21 Ross Johnson <rpj@special.ise.canberra.edu.au>
+
+ Contributed by - Alexander Terekhov <TEREKHOV@de.ibm.com>
+
+ * mutex.c (pthread_mutex_lock): Decrementing lock_idx was
+ not thread-safe.
+ (pthread_mutex_trylock): Likewise.
+
2001-10-26 Ross Johnson <rpj@special.ise.canberra.edu.au>
Reported by - prionx@juno.com
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);
}
+