diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2022-07-26 19:20:50 +0100 |
---|---|---|
committer | Paul Evans <leonerd@leonerd.org.uk> | 2022-08-03 09:52:06 +0100 |
commit | 4b0ceb86a69dee7c4031370d54c78b64f3c3ee06 (patch) | |
tree | a17304b470edba95ce440f594f9adb788103b18f /pp_hot.c | |
parent | c049a0a1b50a03f5acfccd6cb14c268a8168418b (diff) | |
download | perl-4b0ceb86a69dee7c4031370d54c78b64f3c3ee06.tar.gz |
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
Diffstat (limited to 'pp_hot.c')
-rw-r--r-- | pp_hot.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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; } |