#define die_nocontext Perl_die_nocontext
#define deb_nocontext Perl_deb_nocontext
#define form_nocontext Perl_form_nocontext
+#define mess_nocontext Perl_mess_nocontext
#define warn_nocontext Perl_warn_nocontext
#define warner_nocontext Perl_warner_nocontext
#define newSVpvf_nocontext Perl_newSVpvf_nocontext
#define mem_collxfrm Perl_mem_collxfrm
#endif
#define mess Perl_mess
+#define vmess Perl_vmess
+#define qerror Perl_qerror
#define mg_clear Perl_mg_clear
#define mg_copy Perl_mg_copy
#define mg_find Perl_mg_find
#if defined(USE_LOCALE_COLLATE)
#define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c)
#endif
-#define mess(a,b) Perl_mess(aTHX_ a,b)
+#define vmess(a,b) Perl_vmess(aTHX_ a,b)
+#define qerror(a) Perl_qerror(aTHX_ a)
#define mg_clear(a) Perl_mg_clear(aTHX_ a)
#define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d)
#define mg_find(a,b) Perl_mg_find(aTHX_ a,b)
#define deb_nocontext Perl_deb_nocontext
#define Perl_form_nocontext CPerlObj::Perl_form_nocontext
#define form_nocontext Perl_form_nocontext
+#define Perl_mess_nocontext CPerlObj::Perl_mess_nocontext
+#define mess_nocontext Perl_mess_nocontext
#define Perl_warn_nocontext CPerlObj::Perl_warn_nocontext
#define warn_nocontext Perl_warn_nocontext
#define Perl_warner_nocontext CPerlObj::Perl_warner_nocontext
#endif
#define Perl_mess CPerlObj::Perl_mess
#define mess Perl_mess
+#define Perl_vmess CPerlObj::Perl_vmess
+#define vmess Perl_vmess
+#define Perl_qerror CPerlObj::Perl_qerror
+#define qerror Perl_qerror
#define Perl_mg_clear CPerlObj::Perl_mg_clear
#define mg_clear Perl_mg_clear
#define Perl_mg_copy CPerlObj::Perl_mg_copy
# define deb Perl_deb_nocontext
# define die Perl_die_nocontext
# define form Perl_form_nocontext
+# define mess Perl_mess_nocontext
# define newSVpvf Perl_newSVpvf_nocontext
# define sv_catpvf Perl_sv_catpvf_nocontext
# define sv_setpvf Perl_sv_setpvf_nocontext
# define Perl_die_nocontext Perl_die
# define Perl_deb_nocontext Perl_deb
# define Perl_form_nocontext Perl_form
+# define Perl_mess_nocontext Perl_mess
# define Perl_newSVpvf_nocontext Perl_newSVpvf
# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
# define deb Perl_deb_nocontext
# define die Perl_die_nocontext
# define form Perl_form_nocontext
+# define mess Perl_mess_nocontext
# define newSVpvf Perl_newSVpvf_nocontext
# define sv_catpvf Perl_sv_catpvf_nocontext
# define sv_setpvf Perl_sv_setpvf_nocontext
# define Perl_die_nocontext Perl_die
# define Perl_deb_nocontext Perl_deb
# define Perl_form_nocontext Perl_form
+# define Perl_mess_nocontext Perl_mess
# define Perl_newSVpvf_nocontext Perl_newSVpvf
# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
Perl_warner Perl_vwarner
Perl_die Perl_vdie
Perl_form Perl_vform
+ Perl_mess Perl_vmess
Perl_deb Perl_vdeb
Perl_newSVpvf Perl_vnewSVpvf
Perl_sv_setpvf Perl_sv_vsetpvf
? '' : 'return ');
my $emitval = '';
if (@args and $args[$#args] =~ /\.\.\./) {
- pop @args;
pop @aargs;
my $retarg = '';
my $ctxfunc = $func;
np |OP* |die_nocontext |const char* pat|...
np |void |deb_nocontext |const char* pat|...
np |char* |form_nocontext |const char* pat|...
+np |SV* |mess_nocontext |const char* pat|...
np |void |warn_nocontext |const char* pat|...
np |void |warner_nocontext|U32 err|const char* pat|...
np |SV* |newSVpvf_nocontext|const char* pat|...
#if defined(USE_LOCALE_COLLATE)
p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
#endif
-p |SV* |mess |const char* pat|va_list* args
+p |SV* |mess |const char* pat|...
+p |SV* |vmess |const char* pat|va_list* args
+p |void |qerror |SV* err
p |int |mg_clear |SV* sv
p |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
p |MAGIC* |mg_find |SV* sv|int type
#define PL_dumpindent (vTHX->Tdumpindent)
#define PL_efloatbuf (vTHX->Tefloatbuf)
#define PL_efloatsize (vTHX->Tefloatsize)
+#define PL_errors (vTHX->Terrors)
#define PL_extralen (vTHX->Textralen)
#define PL_firstgv (vTHX->Tfirstgv)
#define PL_formtarget (vTHX->Tformtarget)
#define PL_dumpindent (aTHX->Tdumpindent)
#define PL_efloatbuf (aTHX->Tefloatbuf)
#define PL_efloatsize (aTHX->Tefloatsize)
+#define PL_errors (aTHX->Terrors)
#define PL_extralen (aTHX->Textralen)
#define PL_firstgv (aTHX->Tfirstgv)
#define PL_formtarget (aTHX->Tformtarget)
#define PL_Tdumpindent PL_dumpindent
#define PL_Tefloatbuf PL_efloatbuf
#define PL_Tefloatsize PL_efloatsize
+#define PL_Terrors PL_errors
#define PL_Textralen PL_extralen
#define PL_Tfirstgv PL_firstgv
#define PL_Tformtarget PL_formtarget
/* This code is based on croak/warn, see mess() in util.c */
va_start(args, pat);
- msv = mess(pat, &args);
+ msv = vmess(pat, &args);
va_end(args);
message = SvPV(msv,len);
SvREFCNT_dec(PL_rs);
SvREFCNT_dec(PL_nrs);
SvREFCNT_dec(PL_statname);
+ SvREFCNT_dec(PL_errors);
Safefree(PL_screamfirst);
Safefree(PL_screamnext);
Safefree(PL_reg_start_tmp);
Perl_die_nocontext
Perl_deb_nocontext
Perl_form_nocontext
+Perl_mess_nocontext
Perl_warn_nocontext
Perl_warner_nocontext
Perl_newSVpvf_nocontext
Perl_markstack_grow
Perl_mem_collxfrm
Perl_mess
+Perl_vmess
+Perl_qerror
Perl_mg_clear
Perl_mg_copy
Perl_mg_find
/* By this point we should have a stash and a name */
if (!stash) {
- if (!add)
- return Nullgv;
- {
- char sv_type_char = ((sv_type == SVt_PV) ? '$'
- : (sv_type == SVt_PVAV) ? '@'
- : (sv_type == SVt_PVHV) ? '%'
- : 0);
- if (sv_type_char)
- Perl_warn(aTHX_ "Global symbol \"%c%s\" requires explicit package name",
- sv_type_char, name);
- else
- Perl_warn(aTHX_ "Global symbol \"%s\" requires explicit package name",
- name);
+ if (add) {
+ qerror(Perl_mess(aTHX_
+ "Global symbol \"%s%s\" requires explicit package name",
+ (sv_type == SVt_PV ? "$"
+ : sv_type == SVt_PVAV ? "@"
+ : sv_type == SVt_PVHV ? "%"
+ : ""), name));
}
- ++PL_error_count;
- stash = PL_curstash ? PL_curstash : PL_defstash; /* avoid core dumps */
- add_gvflags = ((sv_type == SVt_PV) ? GVf_IMPORTED_SV
- : (sv_type == SVt_PVAV) ? GVf_IMPORTED_AV
- : (sv_type == SVt_PVHV) ? GVf_IMPORTED_HV
- : 0);
+ return Nullgv;
}
if (!SvREFCNT(stash)) /* symbol table under destruction */
#define PL_efloatbuf (*Perl_Tefloatbuf_ptr(aTHXo))
#undef PL_efloatsize
#define PL_efloatsize (*Perl_Tefloatsize_ptr(aTHXo))
+#undef PL_errors
+#define PL_errors (*Perl_Terrors_ptr(aTHXo))
#undef PL_extralen
#define PL_extralen (*Perl_Textralen_ptr(aTHXo))
#undef PL_firstgv
#define Perl_form_nocontext pPerl->Perl_form_nocontext
#undef form_nocontext
#define form_nocontext Perl_form_nocontext
+#undef Perl_mess_nocontext
+#define Perl_mess_nocontext pPerl->Perl_mess_nocontext
+#undef mess_nocontext
+#define mess_nocontext Perl_mess_nocontext
#undef Perl_warn_nocontext
#define Perl_warn_nocontext pPerl->Perl_warn_nocontext
#undef warn_nocontext
#define Perl_mess pPerl->Perl_mess
#undef mess
#define mess Perl_mess
+#undef Perl_vmess
+#define Perl_vmess pPerl->Perl_vmess
+#undef vmess
+#define vmess Perl_vmess
+#undef Perl_qerror
+#define Perl_qerror pPerl->Perl_qerror
+#undef qerror
+#define qerror Perl_qerror
#undef Perl_mg_clear
#define Perl_mg_clear pPerl->Perl_mg_clear
#undef mg_clear
STATIC void
S_no_bareword_allowed(pTHX_ OP *o)
{
- Perl_warn(aTHX_ "Bareword \"%s\" not allowed while \"strict subs\" in use",
- SvPV_nolen(cSVOPo->op_sv));
- ++PL_error_count;
+ qerror(Perl_mess(aTHX_
+ "Bareword \"%s\" not allowed while \"strict subs\" in use",
+ SvPV_nolen(cSVOPo->op_sv)));
}
/* "register" allocation */
PL_defstash = 0;
SvREFCNT_dec(hv);
+ /* clear queued errors */
+ SvREFCNT_dec(PL_errors);
+ PL_errors = Nullsv;
+
FREETMPS;
if (destruct_level >= 2 && ckWARN_d(WARN_INTERNAL)) {
if (PL_scopestack_ix != 0)
#undef Perl_croak
void
-Perl_croak(pTHXo_ const char* pat)
+Perl_croak(pTHXo_ const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_croak_nocontext
void
-Perl_croak_nocontext(const char* pat)
+Perl_croak_nocontext(const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_die_nocontext
OP*
-Perl_die_nocontext(const char* pat)
+Perl_die_nocontext(const char* pat, ...)
{
dTHXo;
OP* retval;
#undef Perl_deb_nocontext
void
-Perl_deb_nocontext(const char* pat)
+Perl_deb_nocontext(const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_form_nocontext
char*
-Perl_form_nocontext(const char* pat)
+Perl_form_nocontext(const char* pat, ...)
{
dTHXo;
char* retval;
}
+#undef Perl_mess_nocontext
+SV*
+Perl_mess_nocontext(const char* pat, ...)
+{
+ dTHXo;
+ SV* retval;
+ va_list args;
+ va_start(args, pat);
+ retval = ((CPerlObj*)pPerl)->Perl_vmess(pat, &args);
+ va_end(args);
+ return retval;
+
+}
+
#undef Perl_warn_nocontext
void
-Perl_warn_nocontext(const char* pat)
+Perl_warn_nocontext(const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_warner_nocontext
void
-Perl_warner_nocontext(U32 err, const char* pat)
+Perl_warner_nocontext(U32 err, const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_newSVpvf_nocontext
SV*
-Perl_newSVpvf_nocontext(const char* pat)
+Perl_newSVpvf_nocontext(const char* pat, ...)
{
dTHXo;
SV* retval;
#undef Perl_sv_catpvf_nocontext
void
-Perl_sv_catpvf_nocontext(SV* sv, const char* pat)
+Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_sv_setpvf_nocontext
void
-Perl_sv_setpvf_nocontext(SV* sv, const char* pat)
+Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_sv_catpvf_mg_nocontext
void
-Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat)
+Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_sv_setpvf_mg_nocontext
void
-Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat)
+Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
{
dTHXo;
va_list args;
#undef Perl_deb
void
-Perl_deb(pTHXo_ const char* pat)
+Perl_deb(pTHXo_ const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_die
OP*
-Perl_die(pTHXo_ const char* pat)
+Perl_die(pTHXo_ const char* pat, ...)
{
OP* retval;
va_list args;
#undef Perl_form
char*
-Perl_form(pTHXo_ const char* pat)
+Perl_form(pTHXo_ const char* pat, ...)
{
char* retval;
va_list args;
#undef Perl_mess
SV*
-Perl_mess(pTHXo_ const char* pat, va_list* args)
+Perl_mess(pTHXo_ const char* pat, ...)
+{
+ SV* retval;
+ va_list args;
+ va_start(args, pat);
+ retval = ((CPerlObj*)pPerl)->Perl_vmess(pat, &args);
+ va_end(args);
+ return retval;
+
+}
+
+#undef Perl_vmess
+SV*
+Perl_vmess(pTHXo_ const char* pat, va_list* args)
+{
+ return ((CPerlObj*)pPerl)->Perl_vmess(pat, args);
+}
+
+#undef Perl_qerror
+void
+Perl_qerror(pTHXo_ SV* err)
{
- return ((CPerlObj*)pPerl)->Perl_mess(pat, args);
+ ((CPerlObj*)pPerl)->Perl_qerror(err);
}
#undef Perl_mg_clear
#undef Perl_newSVpvf
SV*
-Perl_newSVpvf(pTHXo_ const char* pat)
+Perl_newSVpvf(pTHXo_ const char* pat, ...)
{
SV* retval;
va_list args;
#undef Perl_sv_catpvf
void
-Perl_sv_catpvf(pTHXo_ SV* sv, const char* pat)
+Perl_sv_catpvf(pTHXo_ SV* sv, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_sv_setpvf
void
-Perl_sv_setpvf(pTHXo_ SV* sv, const char* pat)
+Perl_sv_setpvf(pTHXo_ SV* sv, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_warn
void
-Perl_warn(pTHXo_ const char* pat)
+Perl_warn(pTHXo_ const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_warner
void
-Perl_warner(pTHXo_ U32 err, const char* pat)
+Perl_warner(pTHXo_ U32 err, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_sv_catpvf_mg
void
-Perl_sv_catpvf_mg(pTHXo_ SV *sv, const char* pat)
+Perl_sv_catpvf_mg(pTHXo_ SV *sv, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_sv_setpvf_mg
void
-Perl_sv_setpvf_mg(pTHXo_ SV *sv, const char* pat)
+Perl_sv_setpvf_mg(pTHXo_ SV *sv, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_dump_indent
void
-Perl_dump_indent(pTHXo_ I32 level, PerlIO *file, const char* pat)
+Perl_dump_indent(pTHXo_ I32 level, PerlIO *file, const char* pat, ...)
{
va_list args;
va_start(args, pat);
#undef Perl_default_protect
void*
-Perl_default_protect(pTHXo_ int *excpt, protect_body_t body)
+Perl_default_protect(pTHXo_ int *excpt, protect_body_t body, ...)
{
void* retval;
va_list args;
}
}
+void
+Perl_qerror(pTHX_ SV *err)
+{
+ if (PL_in_eval)
+ sv_catsv(ERRSV, err);
+ else if (PL_errors)
+ sv_catsv(PL_errors, err);
+ else
+ Perl_warn(aTHX_ "%_", err);
+ ++PL_error_count;
+}
+
OP *
Perl_die_where(pTHX_ char *message, STRLEN msglen)
{
else
message = SvPVx(ERRSV, msglen);
- while ((cxix = dopoptoeval(cxstack_ix)) < 0 && PL_curstackinfo->si_prev) {
+ while ((cxix = dopoptoeval(cxstack_ix)) < 0
+ && PL_curstackinfo->si_prev)
+ {
dounwind(-1);
POPSTACK;
}
if (optype == OP_REQUIRE) {
char* msg = SvPVx(ERRSV, n_a);
- DIE(aTHX_ "%s", *msg ? msg : "Compilation failed in require");
+ DIE(aTHX_ "%sCompilation failed in require",
+ *msg ? msg : "Unknown error\n");
}
return pop_return();
}
LEAVE;
if (optype == OP_REQUIRE) {
char* msg = SvPVx(ERRSV, n_a);
- DIE(aTHX_ "%s", *msg ? msg : "Compilation failed in require");
- } else if (startop) {
+ DIE(aTHX_ "%sCompilation failed in require",
+ *msg ? msg : "Unknown error\n");
+ }
+ else if (startop) {
char* msg = SvPVx(ERRSV, n_a);
POPBLOCK(cx,PL_curpm);
POPEVAL(cx);
- Perl_croak(aTHX_ "%sCompilation failed in regexp", (*msg ? msg : "Unknown error\n"));
+ Perl_croak(aTHX_ "%sCompilation failed in regexp",
+ (*msg ? msg : "Unknown error\n"));
}
SvREFCNT_dec(PL_rs);
PL_rs = SvREFCNT_inc(PL_nrs);
VIRTUAL OP* Perl_die_nocontext(const char* pat, ...);
VIRTUAL void Perl_deb_nocontext(const char* pat, ...);
VIRTUAL char* Perl_form_nocontext(const char* pat, ...);
+VIRTUAL SV* Perl_mess_nocontext(const char* pat, ...);
VIRTUAL void Perl_warn_nocontext(const char* pat, ...);
VIRTUAL void Perl_warner_nocontext(U32 err, const char* pat, ...);
VIRTUAL SV* Perl_newSVpvf_nocontext(const char* pat, ...);
#if defined(USE_LOCALE_COLLATE)
VIRTUAL char* Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen);
#endif
-VIRTUAL SV* Perl_mess(pTHX_ const char* pat, va_list* args);
+VIRTUAL SV* Perl_mess(pTHX_ const char* pat, ...);
+VIRTUAL SV* Perl_vmess(pTHX_ const char* pat, va_list* args);
+VIRTUAL void Perl_qerror(pTHX_ SV* err);
VIRTUAL int Perl_mg_clear(pTHX_ SV* sv);
VIRTUAL int Perl_mg_copy(pTHX_ SV* sv, SV* nsv, const char* key, I32 klen);
VIRTUAL MAGIC* Perl_mg_find(pTHX_ SV* sv, int type);
#else
va_start(args);
#endif
- msv = mess(buf, &args);
+ msv = vmess(buf, &args);
va_end(args);
message = SvPV(msv,l1);
if (l1 > 512)
require "./abc";
EXPECT
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at ./abc line 2.
+Compilation failed in require at - line 2.
########
--FILE-- abc.pm
use abc;
EXPECT
Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at abc.pm line 2.
+Compilation failed in require at - line 2.
BEGIN failed--compilation aborted at - line 2.
########
$joe = 1 ;
EXPECT
Global symbol "$joe" requires explicit package name at - line 5.
+Global symbol "$joe" requires explicit package name at - line 8.
Execution of - aborted due to compilation errors.
########
EXPECT
Global symbol "$joe" requires explicit package name at - line 8.
Execution of - aborted due to compilation errors.
+########
+
+# Check if multiple evals produce same errors
+use strict 'vars';
+my $ret = eval q{ print $x; };
+print $@;
+print "ok 1\n" unless defined $ret;
+$ret = eval q{ print $x; };
+print $@;
+print "ok 2\n" unless defined $ret;
+EXPECT
+Global symbol "$x" requires explicit package name at (eval 1) line 1.
+ok 1
+Global symbol "$x" requires explicit package name at (eval 2) line 1.
+ok 2
PERLVAR(Ttop_env, JMPENV *) /* ptr. to current sigjmp() environment */
PERLVAR(Tstart_env, JMPENV) /* empty startup sigjmp() environment */
PERLVARI(Tprotect, protect_proc_t, MEMBER_TO_FPTR(Perl_default_protect))
+PERLVARI(Terrors, SV *, Nullsv) /* outstanding queued errors */
/* statics "owned" by various functions */
PERLVAR(Tav_fetch_sv, SV *) /* owned by av_fetch() */
Perl_yywarn(pTHX_ char *s)
{
dTHR;
- --PL_error_count;
PL_in_eval |= EVAL_WARNONLY;
yyerror(s);
PL_in_eval &= ~EVAL_WARNONLY;
}
if (PL_in_eval & EVAL_WARNONLY)
Perl_warn(aTHX_ "%_", msg);
- else if (PL_in_eval)
- sv_catsv(ERRSV, msg);
else
- PerlIO_write(PerlIO_stderr(), SvPVX(msg), SvCUR(msg));
- if (++PL_error_count >= 10)
+ qerror(msg);
+ if (PL_error_count >= 10)
Perl_croak(aTHX_ "%_ has too many errors.\n", GvSV(PL_curcop->cop_filegv));
PL_in_my = 0;
PL_in_my_stash = Nullhv;
return SvPVX(sv);
}
+#if defined(PERL_IMPLICIT_CONTEXT)
+SV *
+Perl_mess_nocontext(const char *pat, ...)
+{
+ dTHX;
+ SV *retval;
+ va_list args;
+ va_start(args, pat);
+ retval = vmess(pat, &args);
+ va_end(args);
+ return retval;
+}
+#endif /* PERL_IMPLICIT_CONTEXT */
+
SV *
-Perl_mess(pTHX_ const char *pat, va_list *args)
+Perl_mess(pTHX_ const char *pat, ...)
+{
+ SV *retval;
+ va_list args;
+ va_start(args, pat);
+ retval = vmess(pat, &args);
+ va_end(args);
+ return retval;
+}
+
+SV *
+Perl_vmess(pTHX_ const char *pat, va_list *args)
{
SV *sv = mess_alloc();
static char dgd[] = " during global destruction.\n";
thr, PL_curstack, PL_mainstack));
if (pat) {
- msv = mess(pat, args);
- message = SvPV(msv,msglen);
+ msv = vmess(pat, args);
+ if (PL_errors && SvCUR(PL_errors)) {
+ sv_catsv(PL_errors, msv);
+ message = SvPV(PL_errors, msglen);
+ SvCUR_set(PL_errors, 0);
+ }
+ else
+ message = SvPV(msv,msglen);
}
else {
message = Nullch;
SV *msv;
STRLEN msglen;
- msv = mess(pat, args);
- message = SvPV(msv,msglen);
- DEBUG_S(PerlIO_printf(PerlIO_stderr(), "croak: 0x%lx %s", (unsigned long) thr, message));
+ msv = vmess(pat, args);
+ if (PL_errors && SvCUR(PL_errors)) {
+ sv_catsv(PL_errors, msv);
+ message = SvPV(PL_errors, msglen);
+ SvCUR_set(PL_errors, 0);
+ }
+ else
+ message = SvPV(msv,msglen);
+
+ DEBUG_S(PerlIO_printf(PerlIO_stderr(), "croak: 0x%lx %s",
+ (unsigned long) thr, message));
+
if (PL_diehook) {
/* sv_2cv might call Perl_croak() */
SV *olddiehook = PL_diehook;
SV *msv;
STRLEN msglen;
- msv = mess(pat, args);
+ msv = vmess(pat, args);
message = SvPV(msv, msglen);
if (PL_warnhook) {
SV *msv;
STRLEN msglen;
- msv = mess(pat, args);
+ msv = vmess(pat, args);
message = SvPV(msv, msglen);
if (ckDEAD(err)) {
PL_restartop = 0;
PL_statname = NEWSV(66,0);
+ PL_errors = newSVpvn("", 0);
PL_maxscream = -1;
PL_regcompp = MEMBER_TO_FPTR(Perl_pregcomp);
PL_regexecp = MEMBER_TO_FPTR(Perl_regexec_flags);