* use the value pointer as the key itself. */
ptable_hints_store(MY_CXT.tbl, value, h);
- return newSVuv(PTR2UV(value));
+ return newSViv(PTR2IV(value));
}
STATIC SV *indirect_detag(pTHX_ const SV *hint) {
if (!(hint && SvIOK(hint)))
return NULL;
- h = ptable_fetch(MY_CXT.tbl, INT2PTR(void *, SvUVX(hint)));
+ h = ptable_fetch(MY_CXT.tbl, INT2PTR(void *, SvIVX(hint)));
#if I_WORKAROUND_REQUIRE_PROPAGATION
{
if (SvROK(value)) {
value = SvRV(value);
SvREFCNT_inc_simple_NN(value);
- tag = PTR2UV(value);
+ tag = PTR2IV(value);
}
- return newSVuv(tag);
+ return newSViv(tag);
}
-#define indirect_detag(H) (((H) && SvIOK(H)) ? INT2PTR(SV *, SvUVX(H)) : NULL)
+#define indirect_detag(H) (((H) && SvIOK(H)) ? INT2PTR(SV *, SvIVX(H)) : NULL)
#endif /* I_THREADSAFE || I_WORKAROUND_REQUIRE_PROPAGATION */