This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade Scalar-List-Utils from 1.46 to 1.47
authorDavid Mitchell <davem@iabyn.com>
Thu, 22 Jun 2017 11:53:29 +0000 (12:53 +0100)
committerDavid Mitchell <davem@iabyn.com>
Thu, 22 Jun 2017 12:00:02 +0000 (13:00 +0100)
Note that the last few commits have reverted any local customisations to
1.46.  These were of two kinds. First, fixes for a tainting issue, the
last of which was just a cherry-pick from upstream, which should have made
it into 1.47 anyway.

The second were fixes to tests for netbsd-vax and Inf/Nan. I don't think
blead urgently needs these - we should wait for them to re-appear via the
normal upstream merging process. See
    https://rt.cpan.org/Public/Bug/Display.html?id=118470

Porting/Maintainers.pl
cpan/Scalar-List-Utils/ListUtil.xs
cpan/Scalar-List-Utils/Makefile.PL
cpan/Scalar-List-Utils/lib/List/Util.pm
cpan/Scalar-List-Utils/lib/List/Util/XS.pm
cpan/Scalar-List-Utils/lib/Scalar/Util.pm
cpan/Scalar-List-Utils/lib/Sub/Util.pm
cpan/Scalar-List-Utils/t/tainted.t

index e1d9a2f..1fe22ba 100755 (executable)
@@ -959,7 +959,7 @@ use File::Glob qw(:case);
     },
 
     'Scalar-List-Utils' => {
-        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.46.tar.gz',
+        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.47.tar.gz',
         'FILES'        => q[cpan/Scalar-List-Utils],
     },
 
index 79e74d9..9db3804 100644 (file)
@@ -7,14 +7,33 @@
 #include <perl.h>
 #include <XSUB.h>
 
-#define NEED_sv_2pv_flags 1
-#include "ppport.h"
+#ifdef USE_PPPORT_H
+#  define NEED_sv_2pv_flags 1
+#  define NEED_newSVpvn_flags 1
+#  include "ppport.h"
+#endif
+
+#ifndef PERL_VERSION_DECIMAL
+#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
+#endif
+#ifndef PERL_DECIMAL_VERSION
+#  define PERL_DECIMAL_VERSION \
+         PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
+#endif
+#ifndef PERL_VERSION_GE
+#  define PERL_VERSION_GE(r,v,s) \
+         (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+#ifndef PERL_VERSION_LE
+#  define PERL_VERSION_LE(r,v,s) \
+         (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
+#endif
 
-#if PERL_BCDVERSION >= 0x5006000
+#if PERL_VERSION_GE(5,6,0)
 #  include "multicall.h"
 #endif
 
-#if PERL_BCDVERSION < 0x5023008
+#if !PERL_VERSION_GE(5,23,8)
 #  define UNUSED_VAR_newsp PERL_UNUSED_VAR(newsp)
 #else
 #  define UNUSED_VAR_newsp NOOP
@@ -28,7 +47,7 @@
    was not exported. Therefore platforms like win32, VMS etc have problems
    so we redefine it here -- GMB
 */
-#if PERL_BCDVERSION < 0x5007000
+#if !PERL_VERSION_GE(5,7,0)
 /* Not in 5.6.1. */
 #  ifdef cxinc
 #    undef cxinc
@@ -879,7 +898,7 @@ PPCODE:
 /* This MULTICALL-based code appears to fail on perl 5.10.0 and 5.8.9
  * Skip it on those versions (RT#87857)
  */
-#if defined(dMULTICALL) && (PERL_BCDVERSION > 0x5010000 || PERL_BCDVERSION < 0x5008009)
+#if defined(dMULTICALL) && (PERL_VERSION_GE(5,10,1) || PERL_VERSION_LE(5,8,8))
     assert(cv);
     if(!CvISXSUB(cv)) {
         /* Since MULTICALL is about to move it */
@@ -1056,11 +1075,11 @@ CODE:
                 arg = sv_mortalcopy(arg);
 
             if(SvUOK(arg))
-                sv_setpvf(keysv, "%"UVuf, SvUV(arg));
+                sv_setpvf(keysv, "%" UVuf, SvUV(arg));
             else if(SvIOK(arg))
-                sv_setpvf(keysv, "%"IVdf, SvIV(arg));
+                sv_setpvf(keysv, "%" IVdf, SvIV(arg));
             else
-                sv_setpvf(keysv, "%"NVgf, SvNV(arg));
+                sv_setpvf(keysv, "%" NVgf, SvNV(arg));
 #ifdef HV_FETCH_EMPTY_HE
             he = (HE*) hv_common(seen, NULL, SvPVX(keysv), SvCUR(keysv), 0, HV_FETCH_LVALUE | HV_FETCH_EMPTY_HE, NULL, 0);
             if (HeVAL(he))
@@ -1329,7 +1348,7 @@ CODE:
     if(SvAMAGIC(sv) && (tempsv = AMG_CALLun(sv, numer))) {
         sv = tempsv;
     }
-#if PERL_BCDVERSION < 0x5008005
+#if !PERL_VERSION_GE(5,8,5)
     if(SvPOK(sv) || SvPOKp(sv)) {
         RETVAL = looks_like_number(sv) ? &PL_sv_yes : &PL_sv_no;
     }
index 247b3b7..9859730 100644 (file)
@@ -11,7 +11,7 @@ WriteMakefile(
   NAME         => q[List::Util],
   ABSTRACT     => q[Common Scalar and List utility subroutines],
   AUTHOR       => q[Graham Barr <gbarr@cpan.org>],
-  DEFINE       => q[-DPERL_EXT],
+  DEFINE       => ($ENV{PERL_CORE} ? q[-DPERL_EXT] : q[-DPERL_EXT -DUSE_PPPORT_H]),
   DISTNAME     => q[Scalar-List-Utils],
   VERSION_FROM => 'lib/List/Util.pm',
 
index 1f7d4c0..47324ca 100644 (file)
@@ -15,7 +15,7 @@ our @EXPORT_OK  = qw(
   all any first min max minstr maxstr none notall product reduce sum sum0 shuffle uniq uniqnum uniqstr
   pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst
 );
-our $VERSION    = "1.46";
+our $VERSION    = "1.47";
 our $XS_VERSION = $VERSION;
 $VERSION    = eval $VERSION;
 
index 0c397ea..a9e191f 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 use List::Util;
 
-our $VERSION = "1.46";       # FIXUP
+our $VERSION = "1.47";       # FIXUP
 $VERSION = eval $VERSION;    # FIXUP
 
 1;
index 1aec9f8..bd2b9ff 100644 (file)
@@ -17,7 +17,7 @@ our @EXPORT_OK = qw(
   dualvar isdual isvstring looks_like_number openhandle readonly set_prototype
   tainted
 );
-our $VERSION    = "1.46";
+our $VERSION    = "1.47";
 $VERSION   = eval $VERSION;
 
 require List::Util; # List::Util loads the XS
index 1f90c50..48f775f 100644 (file)
@@ -15,7 +15,7 @@ our @EXPORT_OK = qw(
   subname set_subname
 );
 
-our $VERSION    = "1.46";
+our $VERSION    = "1.47";
 $VERSION   = eval $VERSION;
 
 require List::Util; # as it has the XS
index e483dfd..fb83c86 100644 (file)
@@ -13,12 +13,10 @@ my $var = 2;
 
 ok( !tainted($var), 'known variable');
 
-my $key = (grep { !/^PERL/ } keys %ENV)[0];
+ok( tainted($^X),      'interpreter variable');
 
-ok( tainted($ENV{$key}),       'environment variable');
-
-$var = $ENV{$key};
-ok( tainted($var),     'copy of environment variable');
+$var = $^X;
+ok( tainted($var),     'copy of interpreter variable');
 
 {
     package Tainted;