summaryrefslogtreecommitdiffstats
path: root/unix/tclUnixThrd.c
diff options
context:
space:
mode:
Diffstat (limited to 'unix/tclUnixThrd.c')
-rw-r--r--unix/tclUnixThrd.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/unix/tclUnixThrd.c b/unix/tclUnixThrd.c
index ae22e46..04e1747 100644
--- a/unix/tclUnixThrd.c
+++ b/unix/tclUnixThrd.c
@@ -147,7 +147,13 @@ PCondWait(
pthread_cond_t *pcondPtr,
PMutex *pmutexPtr)
{
+ int counter = pmutexPtr->counter;
+
+ pmutexPtr->thread = 0;
+ pmutexPtr->counter = 0;
pthread_cond_wait(pcondPtr, &pmutexPtr->mutex);
+ pmutexPtr->thread = pthread_self();
+ pmutexPtr->counter = counter;
}
static void
@@ -156,7 +162,13 @@ PCondTimedWait(
PMutex *pmutexPtr,
struct timespec *ptime)
{
+ int counter = pmutexPtr->counter;
+
+ pmutexPtr->thread = 0;
+ pmutexPtr->counter = 0;
pthread_cond_timedwait(pcondPtr, &pmutexPtr->mutex, ptime);
+ pmutexPtr->thread = pthread_self();
+ pmutexPtr->counter = counter;
}
#endif /* HAVE_PTHREAD_MUTEX_RECURSIVE */