X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/7d49f6898e172f330a81e972c5944fc5726fcbf3..41c240f59398510e3a736bd441215c051e190e68:/perl.c diff --git a/perl.c b/perl.c index 355b1a2..2958599 100644 --- a/perl.c +++ b/perl.c @@ -1,7 +1,7 @@ /* perl.c * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -159,6 +159,9 @@ S_init_tls_and_interp(PerlInterpreter *my_perl) OP_REFCNT_INIT; MUTEX_INIT(&PL_dollarzero_mutex); # endif +#ifdef PERL_IMPLICIT_CONTEXT + MUTEX_INIT(&PL_my_ctx_mutex); +# endif } else { PERL_SET_THX(my_perl); @@ -273,7 +276,7 @@ perl_construct(pTHXx) #endif } - PL_rs = newSVpvn("\n", 1); + PL_rs = newSVpvs("\n"); init_stacks(); @@ -298,7 +301,7 @@ perl_construct(pTHXx) PL_fdpid = newAV(); /* for remembering popen pids by fd */ PL_modglobal = newHV(); /* pointers to per-interpreter module globals */ - PL_errors = newSVpvn("",0); + PL_errors = newSVpvs(""); sv_setpvn(PERL_DEBUG_PAD(0), "", 0); /* For regex debugging. */ sv_setpvn(PERL_DEBUG_PAD(1), "", 0); /* ext/re needs these */ sv_setpvn(PERL_DEBUG_PAD(2), "", 0); /* even without DEBUGGING. */ @@ -950,13 +953,13 @@ perl_destruct(pTHXx) PL_DBassertion = Nullsv; PL_DBcv = Nullcv; PL_dbargs = NULL; - PL_debstash = Nullhv; + PL_debstash = NULL; SvREFCNT_dec(PL_argvout_stack); PL_argvout_stack = NULL; SvREFCNT_dec(PL_modglobal); - PL_modglobal = Nullhv; + PL_modglobal = NULL; SvREFCNT_dec(PL_preambleav); PL_preambleav = NULL; SvREFCNT_dec(PL_subname); @@ -965,7 +968,7 @@ perl_destruct(pTHXx) PL_linestr = Nullsv; #ifdef PERL_USES_PL_PIDSTATUS SvREFCNT_dec(PL_pidstatus); - PL_pidstatus = Nullhv; + PL_pidstatus = NULL; #endif SvREFCNT_dec(PL_toptarget); PL_toptarget = Nullsv; @@ -1332,6 +1335,7 @@ perl_fini(void) void Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr) { + dVAR; Renew(PL_exitlist, PL_exitlistlen+1, PerlExitListEntry); PL_exitlist[PL_exitlistlen].fn = fn; PL_exitlist[PL_exitlistlen].ptr = ptr; @@ -1375,6 +1379,7 @@ S_procself_val(pTHX_ SV *sv, const char *arg0) STATIC void S_set_caret_X(pTHX) { + dVAR; GV* tmpgv = gv_fetchpv("\030",TRUE, SVt_PV); /* $^X */ if (tmpgv) { #ifdef HAS_PROCSELFEXE @@ -1434,7 +1439,10 @@ setuid perl scripts securely.\n"); PL_origargc = argc; PL_origargv = argv; - { + if (PL_origalen != 0) { + PL_origalen = 1; /* don't use old PL_origalen if perl_parse() is called again */ + } + else { /* Set PL_origalen be the sum of the contiguous argv[] * elements plus the size of the env in case that it is * contiguous with the argv[]. This is used in mg.c:Perl_magic_set() @@ -1482,7 +1490,7 @@ setuid perl scripts securely.\n"); } } /* Can we grab env area too to be used as the area for $0? */ - if (PL_origenviron) { + if (s && PL_origenviron) { if ((PL_origenviron[0] == s + 1 #ifdef OS2 || (PL_origenviron[0] == s + 9 && (s += 8)) @@ -1518,7 +1526,7 @@ setuid perl scripts securely.\n"); } } } - PL_origalen = s - PL_origargv[0] + 1; + PL_origalen = s ? s - PL_origargv[0] + 1 : 0; } if (PL_do_undump) { @@ -1598,7 +1606,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) PL_fdscript = -1; PL_suidscript = -1; sv_setpvn(PL_linestr,"",0); - sv = newSVpvn("",0); /* first used for -I flags */ + sv = newSVpvs(""); /* first used for -I flags */ SAVEFREESV(sv); init_main_stash(); @@ -1665,6 +1673,9 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) s++; goto reswitch; + case 'E': + PL_minus_E = TRUE; + /* FALL THROUGH */ case 'e': #ifdef MACOS_TRADITIONAL /* ignore -e for Dev:Pseudo argument */ @@ -1673,7 +1684,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) #endif forbid_setid("-e"); if (!PL_e_script) { - PL_e_script = newSVpvn("",0); + PL_e_script = newSVpvs(""); filter_add(read_e_script, NULL); } if (*++s) @@ -1683,8 +1694,8 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) argc--,argv++; } else - Perl_croak(aTHX_ "No code specified for -e"); - sv_catpv(PL_e_script, "\n"); + Perl_croak(aTHX_ "No code specified for -%c", *s); + sv_catpvs(PL_e_script, "\n"); break; case 'f': @@ -1703,9 +1714,9 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) STRLEN len = strlen(s); const char * const p = savepvn(s, len); incpush(p, TRUE, TRUE, FALSE, FALSE); - sv_catpvn(sv, "-I", 2); + sv_catpvs(sv, "-I"); sv_catpvn(sv, p, len); - sv_catpvn(sv, " ", 1); + sv_catpvs(sv, " "); Safefree(p); } else @@ -1728,15 +1739,15 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) if (!PL_preambleav) PL_preambleav = newAV(); av_push(PL_preambleav, - newSVpv("use Config;",0)); + newSVpvs("use Config;")); if (*++s != ':') { STRLEN opts; - opts_prog = newSVpv("print Config::myconfig(),",0); + opts_prog = newSVpvs("print Config::myconfig(),"); #ifdef VMS - sv_catpv(opts_prog,"\"\\nCharacteristics of this PERLSHR image: \\n\","); + sv_catpvs(opts_prog,"\"\\nCharacteristics of this PERLSHR image: \\n\","); #else - sv_catpv(opts_prog,"\"\\nCharacteristics of this binary (from libperl): \\n\","); + sv_catpvs(opts_prog,"\"\\nCharacteristics of this binary (from libperl): \\n\","); #endif opts = SvCUR(opts_prog); @@ -1854,16 +1865,16 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) /* break the line before that space */ opts = space - pv; - sv_insert(opts_prog, opts, 0, - "\\n ", 25); + Perl_sv_insert(aTHX_ opts_prog, opts, 0, + STR_WITH_LEN("\\n ")); } - sv_catpv(opts_prog,"\\n\","); + sv_catpvs(opts_prog,"\\n\","); #if defined(LOCAL_PATCH_COUNT) if (LOCAL_PATCH_COUNT > 0) { int i; - sv_catpv(opts_prog, + sv_catpvs(opts_prog, "\" Locally applied patches:\\n\","); for (i = 1; i <= LOCAL_PATCH_COUNT; i++) { if (PL_localpatches[i]) @@ -1884,14 +1895,14 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) __DATE__); # endif #endif - sv_catpv(opts_prog, "; $\"=\"\\n \"; " + sv_catpvs(opts_prog, "; $\"=\"\\n \"; " "@env = map { \"$_=\\\"$ENV{$_}\\\"\" } " "sort grep {/^PERL/} keys %ENV; "); #ifdef __CYGWIN__ - sv_catpv(opts_prog, + sv_catpvs(opts_prog, "push @env, \"CYGWIN=\\\"$ENV{CYGWIN}\\\"\";"); #endif - sv_catpv(opts_prog, + sv_catpvs(opts_prog, "print \" \\%ENV:\\n @env\\n\" if @env;" "print \" \\@INC:\\n @INC\\n\";"); } @@ -2214,6 +2225,7 @@ Tells a Perl interpreter to run. See L. int perl_run(pTHXx) { + dVAR; I32 oldscope; int ret = 0; dJMPENV; @@ -2267,6 +2279,7 @@ perl_run(pTHXx) STATIC void S_run_body(pTHX_ I32 oldscope) { + dVAR; DEBUG_r(PerlIO_printf(Perl_debug_log, "%s $` $& $' support.\n", PL_sawampersand ? "Enabling" : "Omitting")); @@ -2383,7 +2396,7 @@ Perl_get_hv(pTHX_ const char *name, I32 create) return GvHVn(gv); if (gv) return GvHV(gv); - return Nullhv; + return NULL; } /* @@ -2436,6 +2449,7 @@ Perl_call_argv(pTHX_ const char *sub_name, I32 flags, register char **argv) /* See G_* flags in cop.h */ /* null terminated arg list */ { + dVAR; dSP; PUSHMARK(SP); @@ -2641,6 +2655,7 @@ Perl_call_sv(pTHX_ SV *sv, I32 flags) STATIC void S_call_body(pTHX_ const OP *myop, bool is_eval) { + dVAR; if (PL_op == myop) { if (is_eval) PL_op = Perl_pp_entereval(aTHX); /* this doesn't do a POPMARK */ @@ -2666,6 +2681,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags) /* See G_* flags in cop.h */ { + dVAR; dSP; UNOP myop; /* fake syntax tree node */ volatile I32 oldmark = SP - PL_stack_base; @@ -2758,6 +2774,7 @@ Tells Perl to C the given string and return an SV* result. SV* Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error) { + dVAR; dSP; SV* sv = newSVpv(p, 0); @@ -2791,8 +2808,9 @@ implemented that way; consider using load_module instead. void Perl_require_pv(pTHX_ const char *pv) { - SV* sv; + dVAR; dSP; + SV* sv; PUSHSTACKi(PERLSI_REQUIRE); PUTBACK; sv = Perl_newSVpvf(aTHX_ "require q%c%s%c", 0, pv, 0); @@ -2825,6 +2843,7 @@ S_usage(pTHX_ const char *name) /* XXX move this out into a module ? */ "-d[:debugger] run program under debugger", "-D[number/list] set debugging flags (argument is a bit mask or alphabets)", "-e program one line of program (several -e's allowed, omit programfile)", +"-E program like -e, but enables all optional features", "-f don't do $sitelib/sitecustomize.pl at startup", "-F/pattern/ split() pattern for -a switch (//'s are optional)", "-i[extension] edit <> files in place (makes backup if extension supplied)", @@ -2952,7 +2971,7 @@ Perl_moreswitches(pTHX_ char *s) numlen = 0; s--; } - PL_rs = newSVpvn("", 0); + PL_rs = newSVpvs(""); SvGROW(PL_rs, (STRLEN)(UNISKIP(rschar) + 1)); tmps = (U8*)SvPVX(PL_rs); uvchr_to_utf8(tmps, rschar); @@ -2965,7 +2984,7 @@ Perl_moreswitches(pTHX_ char *s) if (rschar & ~((U8)~0)) PL_rs = &PL_sv_undef; else if (!rschar && numlen >= 2) - PL_rs = newSVpvn("", 0); + PL_rs = newSVpvs(""); else { char ch = (char)rschar; PL_rs = newSVpvn(&ch, 1); @@ -3007,7 +3026,7 @@ Perl_moreswitches(pTHX_ char *s) in the fashion that -MSome::Mod does. */ if (*s == ':' || *s == '=') { const char *start; - SV * const sv = newSVpv("use Devel::", 0); + SV * const sv = newSVpvs("use Devel::"); start = ++s; /* We now allow -d:Module=Foo,Bar */ while(isALNUM(*s) || *s==':') ++s; @@ -3046,7 +3065,7 @@ Perl_moreswitches(pTHX_ char *s) Safefree(PL_inplace); #if defined(__CYGWIN__) /* do backup extension automagically */ if (*(s+1) == '\0') { - PL_inplace = savepv(".bak"); + PL_inplace = savepvs(".bak"); return s+1; } #endif /* __CYGWIN__ */ @@ -3094,14 +3113,14 @@ Perl_moreswitches(pTHX_ char *s) if (isDIGIT(*s)) { I32 flags = 0; STRLEN numlen; - PL_ors_sv = newSVpvn("\n",1); + PL_ors_sv = newSVpvs("\n"); numlen = 3 + (*s == '0'); *SvPVX(PL_ors_sv) = (char)grok_oct(s, &numlen, &flags, NULL); s += numlen; } else { if (RsPARA(PL_rs)) { - PL_ors_sv = newSVpvn("\n\n",2); + PL_ors_sv = newSVpvs("\n\n"); } else { PL_ors_sv = newSVsv(PL_rs); @@ -3115,10 +3134,10 @@ Perl_moreswitches(pTHX_ char *s) s++; { char * const start = s; - SV * const sv = newSVpv("use assertions::activate", 24); + SV * const sv = newSVpvs("use assertions::activate"); while(isALNUM(*s) || *s == ':') ++s; if (s != start) { - sv_catpvn(sv, "::", 2); + sv_catpvs(sv, "::"); sv_catpvn(sv, start, s-start); } if (*s == '=') { @@ -3153,17 +3172,17 @@ Perl_moreswitches(pTHX_ char *s) if (*(start-1) == 'm') { if (*s != '\0') Perl_croak(aTHX_ "Can't use '%c' after -mname", *s); - sv_catpv( sv, " ()"); + sv_catpvs( sv, " ()"); } } else { if (s == start) Perl_croak(aTHX_ "Module name required with -%c option", s[-1]); sv_catpvn(sv, start, s-start); - sv_catpv(sv, " split(/,/,q"); - sv_catpvn(sv, "\0)", 1); /* Use NUL as q//-delimiter. */ + sv_catpvs(sv, " split(/,/,q"); + sv_catpvs(sv, "\0"); /* Use NUL as q//-delimiter. */ sv_catpv(sv, ++s); - sv_catpvn(sv, "\0)", 2); + sv_catpvs(sv, "\0)"); } s += strlen(s); if (!PL_preambleav) @@ -3209,10 +3228,14 @@ Perl_moreswitches(pTHX_ char *s) return s; case 'v': if (!sv_derived_from(PL_patchlevel, "version")) - (void *)upg_version(PL_patchlevel); + upg_version(PL_patchlevel); #if !defined(DGUX) PerlIO_printf(PerlIO_stdout(), - Perl_form(aTHX_ "\nThis is perl, %"SVf" built for %s", + Perl_form(aTHX_ "\nThis is perl, %"SVf +#ifdef PERL_PATCHNUM + " DEVEL" STRINGIFY(PERL_PATCHNUM) +#endif + " built for %s", vstringify(PL_patchlevel), ARCHNAME)); #else /* DGUX */ @@ -3238,7 +3261,7 @@ Perl_moreswitches(pTHX_ char *s) #endif PerlIO_printf(PerlIO_stdout(), - "\n\nCopyright 1987-2005, Larry Wall\n"); + "\n\nCopyright 1987-2006, Larry Wall\n"); #ifdef MACOS_TRADITIONAL PerlIO_printf(PerlIO_stdout(), "\nMac OS port Copyright 1991-2002, Matthias Neeracher;\n" @@ -3375,9 +3398,9 @@ Perl_my_unexec(pTHX) extern int etext; prog = newSVpv(BIN_EXP, 0); - sv_catpv(prog, "/perl"); + sv_catpvs(prog, "/perl"); file = newSVpv(PL_origfilename, 0); - sv_catpv(file, ".perldump"); + sv_catpvs(file, ".perldump"); unexec(SvPVX(file), SvPVX(prog), &etext, sbrk(0), 0); /* unexec prints msg to stderr in case of failure */ @@ -3396,7 +3419,7 @@ Perl_my_unexec(pTHX) STATIC void S_init_interp(pTHX) { - + dVAR; #ifdef MULTIPLICITY # define PERLVAR(var,type) # define PERLVARA(var,n,type) @@ -3440,15 +3463,23 @@ S_init_interp(pTHX) STATIC void S_init_main_stash(pTHX) { + dVAR; GV *gv; PL_curstash = PL_defstash = newHV(); - PL_curstname = newSVpvn("main",4); + /* We know that the string "main" will be in the global shared string + table, so it's a small saving to use it rather than allocate another + 8 bytes. */ + PL_curstname = newSVpvs_share("main"); gv = gv_fetchpv("main::",TRUE, SVt_PVHV); + /* If we hadn't caused another reference to "main" to be in the shared + string table above, then it would be worth reordering these two, + because otherwise all we do is delete "main" from it as a consequence + of the SvREFCNT_dec, only to add it again with hv_name_set */ SvREFCNT_dec(GvHV(gv)); + hv_name_set(PL_defstash, "main", 4, 0); GvHV(gv) = (HV*)SvREFCNT_inc(PL_defstash); SvREADONLY_on(gv); - hv_name_set(PL_defstash, "main", 4, 0); PL_incgv = gv_HVadd(gv_AVadd(gv_fetchpv("INC",TRUE, SVt_PVAV))); SvREFCNT_inc(PL_incgv); /* Don't allow it to be freed */ GvMULTI_on(PL_incgv); @@ -3491,7 +3522,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv) PL_suidscript = -1; if (PL_e_script) { - PL_origfilename = savepvn("-e", 2); + PL_origfilename = savepvs("-e"); } else { /* if find_script() returns, it returns a malloc()-ed value */ @@ -3561,7 +3592,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv) #else /* IAMSUID */ else if (PL_preprocess) { const char * const cpp_cfg = CPPSTDIN; - SV * const cpp = newSVpvn("",0); + SV * const cpp = newSVpvs(""); SV * const cmd = NEWSV(0,0); if (cpp_cfg[0] == 0) /* PERL_MICRO? */ @@ -3571,7 +3602,7 @@ S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv) sv_catpv(cpp, cpp_cfg); # ifndef VMS - sv_catpvn(sv, "-I", 2); + sv_catpvs(sv, "-I"); sv_catpv(sv,PRIVLIB_EXP); # endif @@ -4190,6 +4221,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n"); STATIC void S_find_beginning(pTHX) { + dVAR; register char *s; register const char *s2; #ifdef MACOS_TRADITIONAL @@ -4259,6 +4291,7 @@ S_find_beginning(pTHX) STATIC void S_init_ids(pTHX) { + dVAR; PL_uid = PerlProc_getuid(); PL_euid = PerlProc_geteuid(); PL_gid = PerlProc_getgid(); @@ -4321,6 +4354,7 @@ Perl_doing_taint(int argc, char *argv[], char *envp[]) STATIC void S_forbid_setid(pTHX_ const char *s) { + dVAR; #ifdef SETUID_SCRIPTS_ARE_SECURE_NOW if (PL_euid != PL_uid) Perl_croak(aTHX_ "No %s allowed while running setuid", s); @@ -4360,6 +4394,7 @@ S_forbid_setid(pTHX_ const char *s) void Perl_init_debugger(pTHX) { + dVAR; HV * const ostash = PL_curstash; PL_curstash = PL_debstash; @@ -4388,6 +4423,7 @@ Perl_init_debugger(pTHX) void Perl_init_stacks(pTHX) { + dVAR; /* start with 128-item stack and 8K cxstack */ PL_curstackinfo = new_stackinfo(REASONABLE(128), REASONABLE(8192/sizeof(PERL_CONTEXT) - 1)); @@ -4424,6 +4460,7 @@ Perl_init_stacks(pTHX) STATIC void S_nuke_stacks(pTHX) { + dVAR; while (PL_curstackinfo->si_next) PL_curstackinfo = PL_curstackinfo->si_next; while (PL_curstackinfo) { @@ -4442,17 +4479,19 @@ S_nuke_stacks(pTHX) STATIC void S_init_lexer(pTHX) { + dVAR; PerlIO *tmpfp; tmpfp = PL_rsfp; PL_rsfp = Nullfp; lex_start(PL_linestr); PL_rsfp = tmpfp; - PL_subname = newSVpvn("main",4); + PL_subname = newSVpvs("main"); } STATIC void S_init_predump_symbols(pTHX) { + dVAR; GV *tmpgv; IO *io; @@ -4494,6 +4533,7 @@ S_init_predump_symbols(pTHX) void Perl_init_argv_symbols(pTHX_ register int argc, register char **argv) { + dVAR; argc--,argv++; /* skip name of script */ if (PL_doswitches) { for (; argc > 0 && **argv == '-'; argc--,argv++) { @@ -4505,8 +4545,9 @@ Perl_init_argv_symbols(pTHX_ register int argc, register char **argv) break; } if ((s = strchr(argv[0], '='))) { - *s++ = '\0'; - sv_setpv(GvSV(gv_fetchpv(argv[0]+1,TRUE, SVt_PV)),s); + *s = '\0'; + sv_setpv(GvSV(gv_fetchpv(argv[0] + 1, TRUE, SVt_PV)), s + 1); + *s = '='; } else sv_setiv(GvSV(gv_fetchpv(argv[0]+1,TRUE, SVt_PV)),1); @@ -4626,6 +4667,7 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register STATIC void S_init_perllib(pTHX) { + dVAR; char *s; if (!PL_tainting) { #ifndef VMS @@ -4770,6 +4812,7 @@ S_init_perllib(pTHX) STATIC SV * S_incpush_if_exists(pTHX_ SV *dir) { + dVAR; Stat_t tmpstatbuf; if (PerlLIO_stat(SvPVX_const(dir), &tmpstatbuf) >= 0 && S_ISDIR(tmpstatbuf.st_mode)) { @@ -4783,6 +4826,7 @@ STATIC void S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate) { + dVAR; SV *subdir = Nullsv; const char *p = dir; @@ -4802,7 +4846,7 @@ S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, if (usesep) { while ( *p == PERLLIB_SEP ) { /* Uncomment the next line for PATH semantics */ - /* av_push(GvAVn(PL_incgv), newSVpvn(".", 1)); */ + /* av_push(GvAVn(PL_incgv), newSVpvs(".")); */ p++; } } @@ -4823,7 +4867,7 @@ S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, sv_setpv(libdir, MacPerl_CanonDir(SvPVX(libdir), buf, 0)); } if (SvPVX(libdir)[SvCUR(libdir)-1] != ':') - sv_catpv(libdir, ":"); + sv_catpvs(libdir, ":"); #endif /* Do the if() outside the #ifdef to avoid warnings about an unused @@ -5060,7 +5104,7 @@ S_init_main_thread(pTHX) sv_upgrade(PL_bodytarget, SVt_PVFM); sv_setpvn(PL_bodytarget, "", 0); PL_formtarget = PL_bodytarget; - thr->errsv = newSVpvn("", 0); + thr->errsv = newSVpvs(""); (void) find_threadsv("@"); /* Ensure $@ is initialised early */ PL_maxscream = -1; @@ -5116,7 +5160,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList) PL_curcop = &PL_compiling; CopLINE_set(PL_curcop, oldline); if (paramList == PL_beginav) - sv_catpv(atsv, "BEGIN failed--compilation aborted"); + sv_catpvs(atsv, "BEGIN failed--compilation aborted"); else Perl_sv_catpvf(aTHX_ atsv, "%s failed--call queue aborted", @@ -5169,6 +5213,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList) STATIC void * S_call_list_body(pTHX_ CV *cv) { + dVAR; PUSHMARK(PL_stack_sp); call_sv((SV*)cv, G_EVAL|G_DISCARD); return NULL; @@ -5177,6 +5222,7 @@ S_call_list_body(pTHX_ CV *cv) void Perl_my_exit(pTHX_ U32 status) { + dVAR; DEBUG_S(PerlIO_printf(Perl_debug_log, "my_exit: thread %p, status %lu\n", thr, (unsigned long) status)); switch (status) { @@ -5196,6 +5242,7 @@ Perl_my_exit(pTHX_ U32 status) void Perl_my_failure_exit(pTHX) { + dVAR; #ifdef VMS /* We have been called to fall on our sword. The desired exit code * should be already set in STATUS_UNIX, but could be shifted over @@ -5295,6 +5342,7 @@ S_my_exit_jump(pTHX) static I32 read_e_script(pTHX_ int idx, SV *buf_sv, int maxlen) { + dVAR; const char * const p = SvPVX_const(PL_e_script); const char *nl = strchr(p, '\n');