From: Nicholas Clark Date: Wed, 14 Dec 2005 13:22:14 +0000 (+0000) Subject: The logic to use SVt_NV or SVt_PVNV is in sv_upgrade, so no need to X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7e25a7e974022d38c0b211f280644364acb3c3ee;p=p5sagit%2Fp5-mst-13.2.git The logic to use SVt_NV or SVt_PVNV is in sv_upgrade, so no need to dupliate it in sv_2nv. Also, the final sv_upgrade is never called. p4raw-id: //depot/perl@26352 --- diff --git a/sv.c b/sv.c index f89d624..30193b0 100644 --- a/sv.c +++ b/sv.c @@ -2083,10 +2083,8 @@ Perl_sv_2nv(pTHX_ register SV *sv) } } if (SvTYPE(sv) < SVt_NV) { - if (SvTYPE(sv) == SVt_IV) - sv_upgrade(sv, SVt_PVNV); - else - sv_upgrade(sv, SVt_NV); + /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */ + sv_upgrade(sv, SVt_NV); #ifdef USE_LONG_DOUBLE DEBUG_c({ STORE_NUMERIC_LOCAL_SET_STANDARD(); @@ -2207,11 +2205,10 @@ Perl_sv_2nv(pTHX_ register SV *sv) else { if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED)) report_uninit(sv); - if (SvTYPE(sv) < SVt_NV) - /* Typically the caller expects that sv_any is not NULL now. */ - /* XXX Ilya implies that this is a bug in callers that assume this - and ideally should be fixed. */ - sv_upgrade(sv, SVt_NV); + assert (SvTYPE(sv) >= SVt_NV); + /* Typically the caller expects that sv_any is not NULL now. */ + /* XXX Ilya implies that this is a bug in callers that assume this + and ideally should be fixed. */ return 0.0; } #if defined(USE_LONG_DOUBLE)