From 4b0ceb86a69dee7c4031370d54c78b64f3c3ee06 Mon Sep 17 00:00:00 2001 From: "Paul \"LeoNerd\" Evans" Date: Tue, 26 Jul 2022 19:20:50 +0100 Subject: assert() in pp_gv and pp_gvsv that the GV really is a GV Or, in pp_gv it's also allowed to be a reference to a CV --- pp_hot.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'pp_hot.c') diff --git a/pp_hot.c b/pp_hot.c index 1c3b7920c3..08ddf9d7f6 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -58,6 +58,7 @@ PP(pp_nextstate) PP(pp_gvsv) { dSP; + assert(SvTYPE(cGVOP_gv) == SVt_PVGV); EXTEND(SP,1); if (UNLIKELY(PL_op->op_private & OPpLVAL_INTRO)) PUSHs(save_scalar(cGVOP_gv)); @@ -96,6 +97,9 @@ PP(pp_stringify) PP(pp_gv) { dSP; + /* cGVOP_gv might be a real GV or might be an RV to a CV */ + assert(SvTYPE(cGVOP_gv) == SVt_PVGV || + (SvTYPE(cGVOP_gv) <= SVt_PVMG && SvROK(cGVOP_gv) && SvTYPE(SvRV(cGVOP_gv)) == SVt_PVCV)); XPUSHs(MUTABLE_SV(cGVOP_gv)); RETURN; } -- cgit v1.2.1