diff options
author | John Peacock <jpeacock@rowman.com> | 2004-08-03 18:23:57 -0400 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2004-08-04 06:19:27 +0000 |
commit | d7aa53827cc12fdf8a697328df844e16aaa58287 (patch) | |
tree | 3cdfee90125a42052b481afa420cd15c46d7b005 /util.c | |
parent | 1be326de458e100f1527bf44371fc6d90f6f67fe (diff) | |
download | perl-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.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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; |