diff options
author | Artur Bergman <sky@nanisky.com> | 2002-06-08 10:06:05 +0000 |
---|---|---|
committer | Artur Bergman <sky@nanisky.com> | 2002-06-08 10:06:05 +0000 |
commit | 9bc269e1345ea8734afc0479f8422fbe5eb7ab0a (patch) | |
tree | 600b9df676ce6e0066e4657fe59b3204d1a47cdb /ext | |
parent | 305d464e104c4f2ba04c33fa2de8578423b69a1c (diff) | |
download | perl-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-x | ext/threads/threads.xs | 9 |
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 |