From: Nicholas Clark <nick@ccl4.org>
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)