From 78e4f28fec5bf0c2d3d8edbbd73ac68db3308f05 Mon Sep 17 00:00:00 2001 From: David Mitchell Date: Mon, 27 Feb 2017 11:44:12 +0000 Subject: [PATCH] S_gv_stashsvpvn_cached(): add asserts RT #130344 PL_stashcache holds SvIOK() scalars whose integer values are hidden pointers to HVs. Add asserts that this is indeed the case. --- gv.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gv.c b/gv.c index 8c85614..d32a9c5 100644 --- a/gv.c +++ b/gv.c @@ -1496,7 +1496,14 @@ S_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flag (flags & SVf_UTF8) ? HVhek_UTF8 : 0, 0, NULL, 0 ); - if (he) return INT2PTR(HV*,SvIVX(HeVAL(he))); + if (he) { + SV *sv = HeVAL(he); + HV *hv; + assert(SvIOK(sv)); + hv = INT2PTR(HV*, SvIVX(sv)); + assert(SvTYPE(hv) == SVt_PVHV); + return hv; + } else if (flags & GV_CACHE_ONLY) return NULL; if (namesv) { -- 1.8.3.1