summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorJohn Peacock <jpeacock@rowman.com>2004-08-03 18:23:57 -0400
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2004-08-04 06:19:27 +0000
commitd7aa53827cc12fdf8a697328df844e16aaa58287 (patch)
tree3cdfee90125a42052b481afa420cd15c46d7b005 /util.c
parent1be326de458e100f1527bf44371fc6d90f6f67fe (diff)
downloadperl-d7aa53827cc12fdf8a697328df844e16aaa58287.tar.gz
Final version object core patch?
Message-ID: <411048BD.3080700@rowman.com> p4raw-id: //depot/perl@23190
Diffstat (limited to 'util.c')
-rw-r--r--util.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/util.c b/util.c
index 02d65a683a..8d4c13e0a1 100644
--- a/util.c
+++ b/util.c
@@ -4004,6 +4004,19 @@ SV *
Perl_new_version(pTHX_ SV *ver)
{
SV *rv = newSV(0);
+ if ( sv_derived_from(ver,"version") ) /* can just copy directly */
+ {
+ I32 key;
+ AV *av = (AV *)SvRV(ver);
+ SV* sv = newSVrv(rv, "version"); /* create an SV and upgrade the RV */
+ (void)sv_upgrade(sv, SVt_PVAV); /* needs to be an AV type */
+ for ( key = 0; key <= av_len(av); key++ )
+ {
+ I32 rev = SvIV(*av_fetch(av, key, FALSE));
+ av_push((AV *)sv, newSViv(rev));
+ }
+ return rv;
+ }
#ifdef SvVOK
if ( SvVOK(ver) ) { /* already a v-string */
char *version;