X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.c;h=a4e82333e9c42c72f8e78397966891bfaf53c085;hb=e17cb2a9c513ce1acd034452f9a933fcfa6c0129;hp=f84e2416a8b74cc65f696e44ef08d8e9eb8d7dd0;hpb=16bdeea22f8cedc459c05644ea5e42bd8370b42c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.c b/perl.c index f84e241..a4e8233 100644 --- a/perl.c +++ b/perl.c @@ -176,6 +176,7 @@ perl_construct(register PerlInterpreter *sv_interp) #endif } + init_stacks(ARGS); #ifdef MULTIPLICITY I_REINIT; perl_destruct_level = 1; @@ -211,7 +212,6 @@ perl_construct(register PerlInterpreter *sv_interp) fdpid = newAV(); /* for remembering popen pids by fd */ - init_stacks(ARGS); DEBUG( { New(51,debname,128,char); New(52,debdelim,128,char); @@ -327,6 +327,7 @@ perl_destruct(register PerlInterpreter *sv_interp) op_free(main_root); main_root = Nullop; } + curcop = &compiling; main_start = Nullop; SvREFCNT_dec(main_cv); main_cv = Nullcv; @@ -2491,7 +2492,7 @@ nuke_stacks(void) curstackinfo = curstackinfo->si_next; while (curstackinfo) { PERL_SI *p = curstackinfo->si_prev; - SvREFCNT_dec(curstackinfo->si_stack); + /* curstackinfo->si_stack got nuked by sv_free_arenas() */ Safefree(curstackinfo->si_cxstack); Safefree(curstackinfo); curstackinfo = p; @@ -2978,7 +2979,7 @@ my_failure_exit(void) static void my_exit_jump(void) { - dTHR; + dSP; register PERL_CONTEXT *cx; I32 gimme; SV **newsp; @@ -2993,6 +2994,7 @@ my_exit_jump(void) e_tmpname = Nullch; } + POPSTACK_TO(mainstack); if (cxstack_ix >= 0) { if (cxstack_ix > 0) dounwind(0);