dVAR; dSP; dTARGET;
const char *pv;
SV * const sv = POPs;
- STRLEN len;
if (sv)
SvGETMAGIC(sv);
if (!sv || !SvROK(sv))
RETPUSHNO;
- pv = sv_reftype_len(SvRV(sv),TRUE,&len);
- PUSHp(pv, len);
+ pv = sv_reftype(SvRV(sv),TRUE);
+ PUSHp(pv, strlen(pv));
RETURN;
}
dVAR; dSP; dTARGET;
if (SvTYPE(TOPs) >= SVt_PVAV || isGV_with_GP(TOPs))
Perl_croak_no_modify(aTHX);
+ if (SvROK(TOPs))
+ TARG = sv_newmortal();
sv_setsv(TARG, TOPs);
if (!SvREADONLY(TOPs) && SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs)
&& SvIVX(TOPs) != IV_MAX)
dVAR; dSP; dTARGET;
if (SvTYPE(TOPs) >= SVt_PVAV || isGV_with_GP(TOPs))
Perl_croak_no_modify(aTHX);
+ if (SvROK(TOPs))
+ TARG = sv_newmortal();
sv_setsv(TARG, TOPs);
if (!SvREADONLY(TOPs) && SvIOK_notUV(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs)
&& SvIVX(TOPs) != IV_MIN)