From: Jerry D. Hedden <jdhedden@cpan.org>
Date: Thu, 11 Oct 2007 10:23:03 +0000 (-0400)
Subject: pp_int should treat refs as UVs (not IVs)
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=19119994cb808157abfddb5879338976e13d711a;p=p5sagit%2Fp5-mst-13.2.git

pp_int should treat refs as UVs (not IVs)
From: "Jerry D. Hedden" <jdhedden@cpan.org>
Message-ID: <1ff86f510710110723p6cbed55fo558777258061b556@mail.gmail.com>

p4raw-id: //depot/perl@32100
---

diff --git a/pp.c b/pp.c
index 3e22feb..d533738 100644
--- a/pp.c
+++ b/pp.c
@@ -2874,7 +2874,7 @@ PP(pp_int)
 {
     dVAR; dSP; dTARGET; tryAMAGICun(int);
     {
-      SV *sv = TOPs;
+      dTOPss;
       IV iv;
       /* XXX it's arguable that compiler casting to IV might be subtly
 	 different from modf (for numbers inside (IV_MIN,UV_MAX)) in which
@@ -2886,7 +2886,7 @@ PP(pp_int)
 	if (!tsv)
 	    break;
 	if (SvROK(tsv) && SvRV(tsv) == SvRV(sv)) {
-	    SETi(PTR2IV(SvRV(sv)));
+	    SETu(PTR2UV(SvRV(sv)));
 	    RETURN;
 	}
 	else
@@ -2904,7 +2904,7 @@ PP(pp_int)
 	    SETi(iv);
       }
       else if (SvROK(sv)) {
-	    SETi(iv);
+	    SETu(PTR2UV(SvRV(sv)));
       }
       else {
 	  const NV value = SvNV(sv);