This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Grab latest changes from CPAN 0.9905
[perl5.git] / vutil.c
diff --git a/vutil.c b/vutil.c
index 303e76c..8eafd75 100644 (file)
--- a/vutil.c
+++ b/vutil.c
@@ -521,7 +521,7 @@ Perl_new_version(pTHX_ SV *ver)
        }
        else {
 #endif
-       sv_setsv(rv,ver); /* make a duplicate */
+       SvSetSV_nosteal(rv, ver); /* make a duplicate */
 #ifdef SvVOK
        }
     }
@@ -598,6 +598,7 @@ Perl_upg_version(pTHX_ SV *ver, bool qv)
 #endif
     else if ( (SvUOK(ver) && SvUVX(ver) > VERSION_MAX)
           || (SvIOK(ver) && SvIVX(ver) > VERSION_MAX) ) {
+       /* out of bounds [unsigned] integer */
        STRLEN len;
        char tbuf[64];
        len = my_snprintf(tbuf, sizeof(tbuf), "%d", VERSION_MAX);
@@ -605,6 +606,9 @@ Perl_upg_version(pTHX_ SV *ver, bool qv)
        Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW),
                       "Integer overflow in version %d",VERSION_MAX);
     }
+    else if ( SvUOK(ver) || SvIOK(ver) ) {
+       version = savesvpv(ver);
+    }
     else /* must be a string or something like a string */
     {
        STRLEN len;