ensure PL_dirty is reinit-ed properly under -DMULTIPLICITY
Gurusamy Sarathy [Tue, 17 Nov 1998 07:43:08 +0000 (07:43 +0000)]
p4raw-id: //depot/perl@2244

perl.c
thrdvar.h

diff --git a/perl.c b/perl.c
index d2ee055..bf86fef 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -354,6 +354,7 @@ perl_destruct(register PerlInterpreter *sv_interp)
     PL_main_start = Nullop;
     SvREFCNT_dec(PL_main_cv);
     PL_main_cv = Nullcv;
+    PL_dirty = TRUE;
 
     if (PL_sv_objcount) {
        /*
@@ -361,8 +362,6 @@ perl_destruct(register PerlInterpreter *sv_interp)
         * destructors and destructees still exist.  Some sv's might remain.
         * Non-referenced objects are on their own.
         */
-    
-       PL_dirty = TRUE;
        sv_clean_objs();
     }
 
@@ -1872,6 +1871,7 @@ init_interp(void)
     PL_profiledata     = NULL;         \
     PL_rsfp            = Nullfp;       \
     PL_rsfp_filters    = Nullav;       \
+    PL_dirty           = FALSE;        \
   } STMT_END
     I_REINIT;
 #else
index fb45e47..51f68ea 100644 (file)
--- a/thrdvar.h
+++ b/thrdvar.h
@@ -85,7 +85,7 @@ PERLVAR(Trestartop,   OP *)           /* propagating an error from croak? */
 PERLVARI(Tcurcop,      COP * VOL,      &PL_compiling)
 PERLVAR(Tin_eval,      VOL int)        /* trap "fatal" errors? */
 PERLVAR(Tdelaymagic,   int)            /* ($<,$>) = ... */
-PERLVAR(Tdirty,                bool)           /* in the middle of tearing things down? */
+PERLVARI(Tdirty,       bool, FALSE)    /* in the middle of tearing things down? */
 PERLVAR(Tlocalizing,   int)            /* are we processing a local() list? */
 
 PERLVAR(Tcurstack,     AV *)           /* THE STACK */