"indirect", 8,
0,
indirect_hash);
- return SvOK(id) ? SvUV(id) : 0;
+ return SvIOK(id) ? SvUV(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);
}
goto done;
pm = indirect_map_fetch(om, &svm);
po = indirect_map_fetch(oo, &svo);
- if (pm && po && pm < po)
- ((hint == 2) ? croak : warn)(indirect_msg, SvPV_nolen_const(svm),
- SvPV_nolen_const(svo));
+ if (pm && po && pm < po) {
+ const char *psvm = SvPV_nolen_const(svm), *psvo = SvPV_nolen_const(svo);
+ if (hint == 2)
+ croak(indirect_msg, psvm, psvo);
+ else
+ warn(indirect_msg, psvm, psvo);
+ }
}
done: