summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorSimon Cozens <simon@netthink.co.uk>2001-04-22 19:47:25 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2001-04-22 20:55:43 +0000
commit1dc13c174ce1e7042058992973b5cae87df5d46d (patch)
tree8f0475b93f4ca4ae6758832188ebb91b746a1d1b /sv.c
parent34a48b4b2c642540b102169c8b78c89beeebe902 (diff)
downloadperl-1dc13c174ce1e7042058992973b5cae87df5d46d.tar.gz
Re: [ID 20010422.003] Core dump in overloaded bool while using '
Message-ID: <20010422184725.A14411@netthink.co.uk> p4raw-id: //depot/perl@9782
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sv.c b/sv.c
index 5778adb2e6..5ce8a1adc8 100644
--- a/sv.c
+++ b/sv.c
@@ -1730,7 +1730,7 @@ Perl_sv_2iv(pTHX_ register SV *sv)
if (SvROK(sv)) {
SV* tmpstr;
if (SvAMAGIC(sv) && (tmpstr=AMG_CALLun(sv,numer)) &&
- (SvRV(tmpstr) != SvRV(sv)))
+ (SvTYPE(tmpstr) != SVt_RV || (SvRV(tmpstr) != SvRV(sv))))
return SvIV(tmpstr);
return PTR2IV(SvRV(sv));
}
@@ -1984,7 +1984,7 @@ Perl_sv_2uv(pTHX_ register SV *sv)
if (SvROK(sv)) {
SV* tmpstr;
if (SvAMAGIC(sv) && (tmpstr=AMG_CALLun(sv,numer)) &&
- (SvRV(tmpstr) != SvRV(sv)))
+ (SvTYPE(tmpstr) != SVt_RV || (SvRV(tmpstr) != SvRV(sv))))
return SvUV(tmpstr);
return PTR2UV(SvRV(sv));
}
@@ -2268,7 +2268,7 @@ Perl_sv_2nv(pTHX_ register SV *sv)
if (SvROK(sv)) {
SV* tmpstr;
if (SvAMAGIC(sv) && (tmpstr=AMG_CALLun(sv,numer)) &&
- (SvRV(tmpstr) != SvRV(sv)))
+ (SvTYPE(tmpstr) != SVt_RV || (SvRV(tmpstr) != SvRV(sv))))
return SvNV(tmpstr);
return PTR2NV(SvRV(sv));
}
@@ -2684,7 +2684,7 @@ Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
if (SvROK(sv)) {
SV* tmpstr;
if (SvAMAGIC(sv) && (tmpstr=AMG_CALLun(sv,string)) &&
- (SvRV(tmpstr) != SvRV(sv)))
+ (SvTYPE(tmpstr) != SVt_RV || (SvRV(tmpstr) != SvRV(sv))))
return SvPV(tmpstr,*lp);
sv = (SV*)SvRV(sv);
if (!sv)
@@ -2924,7 +2924,7 @@ Perl_sv_2bool(pTHX_ register SV *sv)
if (SvROK(sv)) {
SV* tmpsv;
if (SvAMAGIC(sv) && (tmpsv=AMG_CALLun(sv,bool_)) &&
- (SvRV(tmpsv) != SvRV(sv)))
+ (SvTYPE(tmpsv) != SVt_RV || (SvRV(tmpsv) != SvRV(sv))))
return SvTRUE(tmpsv);
return SvRV(sv) != 0;
}