Change 18615 by sky@sky-tibook on 2003/02/01 12:01:01

        Don't free thread before using it, breaks platforms that
        trust that I really want to free what I free, (like HPUX
        and AIX).

Affected files ...

... //depot/perl/ext/threads/threads.xs#57 edit

Differences ...

==== //depot/perl/ext/threads/threads.xs#57 (xtext) ====
Index: perl/ext/threads/threads.xs
--- perl/ext/threads/threads.xs#56~18432~       Fri Jan  3 20:48:30 2003
+++ perl/ext/threads/threads.xs Sat Feb  1 04:01:01 2003
@@ -91,7 +91,6 @@
 void
 Perl_ithread_destruct (pTHX_ ithread* thread, const char *why)
 {
-        PerlInterpreter* destroyperl = NULL;        
        MUTEX_LOCK(&thread->mutex);
        if (!thread->next) {
            Perl_croak(aTHX_ "panic: destruct destroyed thread %p (%s)",thread, why);
@@ -123,26 +122,25 @@
 #endif
        MUTEX_UNLOCK(&create_destruct_mutex);
        /* Thread is now disowned */
-       if (thread->interp) {
+
+       if(thread->interp) {
            dTHXa(thread->interp);
+           ithread*        current_thread;
            PERL_SET_CONTEXT(thread->interp);
+           PERL_THREAD_GETSPECIFIC(self_key,current_thread);
+           PERL_THREAD_SETSPECIFIC(self_key,thread);
            SvREFCNT_dec(thread->params);
            thread->params = Nullsv;
-           destroyperl = thread->interp;
+           perl_destruct(thread->interp);
+            perl_free(thread->interp);
            thread->interp = NULL;
+           PERL_THREAD_SETSPECIFIC(self_key,current_thread);
+
        }
        MUTEX_UNLOCK(&thread->mutex);
        MUTEX_DESTROY(&thread->mutex);
         PerlMemShared_free(thread);
-       if(destroyperl) {
-           ithread*        current_thread;
-           PERL_THREAD_GETSPECIFIC(self_key,current_thread);
-           PERL_THREAD_SETSPECIFIC(self_key,thread);
-           perl_destruct(destroyperl);
-            perl_free(destroyperl);
-           PERL_THREAD_SETSPECIFIC(self_key,current_thread);
 
-       }
        PERL_SET_CONTEXT(aTHX);
 }
 
End of Patch.

Reply via email to