s |OP* |vdie |NULLOK const char* pat|NULLOK va_list* args
#endif
: Used in util.c
-p |OP* |die_where |NULLOK SV* msv
+pr |void |die_where |NULLOK SV* msv
Ap |void |dounwind |I32 cxix
: FIXME
pmb |bool |do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp
PP(pp_padany)
{
DIE(aTHX_ "NOT IMPL LINE %d",__LINE__);
+ return NORMAL;
}
PP(pp_mapstart)
{
DIE(aTHX_ "panic: mapstart"); /* uses grepstart */
+ return NORMAL;
}
/* These ops all have the same body as pp_null. */
dVAR;
DIE(aTHX_ "panic: unimplemented op %s (#%d) called", OP_NAME(PL_op),
PL_op->op_type);
+ return NORMAL;
}
PP(pp_boolkeys)
#define dTARG SV *targ
#define NORMAL PL_op->op_next
-#define DIE return Perl_die
+#define DIE Perl_die
/*
=for apidoc Ams||PUTBACK
++PL_parser->error_count;
}
-OP *
+void
Perl_die_where(pTHX_ SV *msv)
{
dVAR;
*msg ? msg : "Unknown error\n");
}
assert(CxTYPE(cx) == CXt_EVAL);
- return cx->blk_eval.retop;
+ PL_restartop = cx->blk_eval.retop;
+ JMPENV_JUMP(3);
+ /* NOTREACHED */
}
}
write_to_stderr( msv ? msv : ERRSV );
my_failure_exit();
/* NOTREACHED */
- return 0;
}
PP(pp_xor)
tmpsv = newSVpvs_flags("Died", SVs_TEMP);
DIE(aTHX_ "%"SVf, SVfARG(tmpsv));
+ RETURN;
}
/* I/O. */
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
STATIC OP* S_vdie(pTHX_ const char* pat, va_list* args);
#endif
-PERL_CALLCONV OP* Perl_die_where(pTHX_ SV* msv);
+PERL_CALLCONV void Perl_die_where(pTHX_ SV* msv)
+ __attribute__noreturn__;
+
PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix);
/* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp)
__attribute__nonnull__(pTHX_2)
message = vdie_croak_common(pat, args);
- PL_restartop = die_where(message);
- JMPENV_JUMP(3);
+ die_where(message);
/* NOTREACHED */
return NULL;
}
msv = S_vdie_croak_common(aTHX_ pat, args);
- if (PL_in_eval) {
- PL_restartop = die_where(msv);
- JMPENV_JUMP(3);
- }
-
- write_to_stderr( msv ? msv : ERRSV );
- my_failure_exit();
+ die_where(msv);
}
#if defined(PERL_IMPLICIT_CONTEXT)
assert(msv);
S_vdie_common(aTHX_ msv, FALSE);
}
- if (PL_in_eval) {
- PL_restartop = die_where(msv);
- JMPENV_JUMP(3);
- }
- write_to_stderr(msv);
- my_failure_exit();
+ die_where(msv);
}
else {
Perl_vwarn(aTHX_ pat, args);