I32 items = 0;
I32 oldsave;
+ retry:
if (!CvROOT(cv) && !CvXSUB(cv)) {
- if (CvGV(cv)) {
- SV *tmpstr = sv_newmortal();
- gv_efullname3(tmpstr, CvGV(cv), Nullch);
+ GV *gv = CvGV(cv);
+ GV *autogv;
+ if (gv) {
+ SV *tmpstr;
+ /* autoloaded stub? */
+ if (cv != GvCV(gv) && (cv = GvCV(gv)))
+ goto retry;
+ autogv = gv_autoload4(GvSTASH(gv), GvNAME(gv),
+ GvNAMELEN(gv), FALSE);
+ if (autogv && (cv = GvCV(autogv)))
+ goto retry;
+ tmpstr = sv_newmortal();
+ gv_efullname3(tmpstr, gv, Nullch);
DIE("Goto undefined subroutine &%s",SvPVX(tmpstr));
}
DIE("Goto undefined subroutine");
PL_do_undump = FALSE;
}
- if (PL_top_env->je_prev) {
- PL_restartop = retop;
- JMPENV_JUMP(3);
- }
-
RETURNOP(retop);
}
PL_hints = 0;
PL_op = &dummy;
- PL_op->op_type = 0; /* Avoid uninit warning. */
+ PL_op->op_type = OP_ENTEREVAL;
PL_op->op_flags = 0; /* Avoid uninit warning. */
PUSHBLOCK(cx, CXt_EVAL, SP);
PUSHEVAL(cx, 0, PL_compiling.cop_filegv);
lex_end();
*avp = (AV*)SvREFCNT_inc(PL_comppad);
LEAVE;
- if (curcop = &PL_compiling)
+ if (PL_curcop == &PL_compiling)
PL_compiling.op_private = PL_hints;
#ifdef OP_IN_REGISTER
op = PL_opsave;
RETPUSHUNDEF;
}
else
- errno = 0;
+ SETERRNO(0, SS$_NORMAL);
/* Assume success here to prevent recursive requirement. */
(void)hv_store(GvHVn(PL_incgv), name, strlen(name),
SAVEDELETE(PL_defstash, safestr, strlen(safestr));
SAVEHINTS();
PL_hints = PL_op->op_targ;
- SAVEPPTR(compiling.cop_warnings);
+ SAVEPPTR(PL_compiling.cop_warnings);
if (PL_compiling.cop_warnings != WARN_ALL
&& PL_compiling.cop_warnings != WARN_NONE){
PL_compiling.cop_warnings = newSVsv(PL_compiling.cop_warnings) ;