STATIC U32 indirect_hash = 0;
-STATIC UV indirect_hint(pTHX) {
+STATIC IV indirect_hint(pTHX) {
#define indirect_hint() indirect_hint(aTHX)
SV *id = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash,
NULL,
"indirect", 8,
0,
indirect_hash);
- return SvOK(id) ? SvUV(id) : 0;
+ return (id && SvOK(id) && SvIOK(id)) ? SvIV(id) : 0;
}
/* ... op -> source position ............................................... */
val = newSVsv(sv);
SvUPGRADE(val, SVt_PVIV);
SvUVX(val) = PTR2UV(src);
+ SvIOK_on(val);
+ SvIsUV_on(val);
if (!hv_store(indirect_map, buf, sprintf(buf, "%u", PTR2UV(o)), val, 0))
SvREFCNT_dec(val);
}
STATIC OP *indirect_ck_entersub(pTHX_ OP *o) {
LISTOP *op;
OP *om, *oo;
- UV hint = indirect_hint();
+ IV hint = indirect_hint();
if (hint) {
const char *pm, *po;