Re: [PATCH] Fix overloading for 64-bit ints (revised)
Jerry D. Hedden [Fri, 19 Oct 2007 20:50:27 +0000 (16:50 -0400)]
From: "Jerry D. Hedden" <jdhedden@cpan.org>
Message-ID: <1ff86f510710191750s3f25eae2x2dc2e90f18f1f716@mail.gmail.com>

p4raw-id: //depot/perl@32148

pod/perlintern.pod
sv.c

index 272e5d4..198ec58 100644 (file)
@@ -1046,7 +1046,8 @@ Found in file sv.c
 X<sv_2num>
 
 Return an SV with the numeric value of the source SV, doing any necessary
-reference or overload conversion.
+reference or overload conversion.  You must use the C<SvNUM(sv)> macro to
+access this function.
 
        SV*     sv_2num(SV* sv)
 
diff --git a/sv.c b/sv.c
index f418b05..25f1441 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -2505,7 +2505,8 @@ Perl_sv_2nv(pTHX_ register SV *sv)
 =for apidoc sv_2num
 
 Return an SV with the numeric value of the source SV, doing any necessary
-reference or overload conversion.
+reference or overload conversion.  You must use the C<SvNUM(sv)> macro to
+access this function.
 
 =cut
 */
@@ -2513,9 +2514,6 @@ reference or overload conversion.
 SV *
 Perl_sv_2num(pTHX_ register SV *sv)
 {
-    if (!SvROK(sv))
-       return sv;
-
     if (SvAMAGIC(sv)) {
        SV * const tmpsv = AMG_CALLun(sv,numer);
        if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))