summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorArtur Bergman <sky@nanisky.com>2002-06-08 10:06:05 +0000
committerArtur Bergman <sky@nanisky.com>2002-06-08 10:06:05 +0000
commit9bc269e1345ea8734afc0479f8422fbe5eb7ab0a (patch)
tree600b9df676ce6e0066e4657fe59b3204d1a47cdb /ext
parent305d464e104c4f2ba04c33fa2de8578423b69a1c (diff)
downloadperl-9bc269e1345ea8734afc0479f8422fbe5eb7ab0a.tar.gz
Fix for bug [ID 20020602.007].
Don't decrement the active flag until AFTER we have run perl_destruct p4raw-id: //depot/perl@17080
Diffstat (limited to 'ext')
-rwxr-xr-xext/threads/threads.xs9
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/threads/threads.xs b/ext/threads/threads.xs
index cbe4e04b33..e1f6c9aa6a 100755
--- a/ext/threads/threads.xs
+++ b/ext/threads/threads.xs
@@ -288,10 +288,6 @@ Perl_ithread_run(void * arg) {
}
PerlIO_flush((PerlIO*)NULL);
- MUTEX_LOCK(&create_destruct_mutex);
- active_threads--;
- assert( active_threads >= 0 );
- MUTEX_UNLOCK(&create_destruct_mutex);
MUTEX_LOCK(&thread->mutex);
thread->state |= PERL_ITHR_FINISHED;
@@ -301,6 +297,11 @@ Perl_ithread_run(void * arg) {
} else {
MUTEX_UNLOCK(&thread->mutex);
}
+ MUTEX_LOCK(&create_destruct_mutex);
+ active_threads--;
+ assert( active_threads >= 0 );
+ MUTEX_UNLOCK(&create_destruct_mutex);
+
#ifdef WIN32
return (DWORD)0;
#else