summaryrefslogtreecommitdiff
path: root/cpan/List-Util
diff options
context:
space:
mode:
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>2012-12-27 21:49:23 +0000
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>2012-12-27 21:49:23 +0000
commitc9612cb4a5ee19f5c24c8b9e3615e5f55881ed68 (patch)
tree19eeed9415365b9eb881777321919891b333928a /cpan/List-Util
parentd72a6fbd28855c4fdeaebdfb8a420addd1751e8b (diff)
downloadperl-c9612cb4a5ee19f5c24c8b9e3615e5f55881ed68.tar.gz
Update Scalar-List-Utils to CPAN version 1.27
[DELTA] 1.26_001 -- Sun Dec 23 15:58 * Fix multicall refcount bug RT#80646
Diffstat (limited to 'cpan/List-Util')
-rw-r--r--cpan/List-Util/Changes4
-rw-r--r--cpan/List-Util/ListUtil.xs16
-rw-r--r--cpan/List-Util/lib/List/Util.pm2
-rw-r--r--cpan/List-Util/lib/List/Util/XS.pm2
-rw-r--r--cpan/List-Util/lib/Scalar/Util.pm2
5 files changed, 23 insertions, 3 deletions
diff --git a/cpan/List-Util/Changes b/cpan/List-Util/Changes
index d390576fb4..9ab980432e 100644
--- a/cpan/List-Util/Changes
+++ b/cpan/List-Util/Changes
@@ -1,3 +1,7 @@
+1.26_001 -- Sun Dec 23 15:58
+
+ * Fix multicall refcount bug RT#80646
+
1.26 -- Sun Dec 16 19:39
* Merge patch from JDHEDDEN - Add Scalar::Util::isdual() RT#76150
diff --git a/cpan/List-Util/ListUtil.xs b/cpan/List-Util/ListUtil.xs
index 93e415c180..1ae74cd6ef 100644
--- a/cpan/List-Util/ListUtil.xs
+++ b/cpan/List-Util/ListUtil.xs
@@ -58,6 +58,10 @@ my_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
# define slu_sv_value(sv) (SvIOK(sv)) ? (NV)(SvIVX(sv)) : (SvNV(sv))
#endif
+#if PERL_VERSION < 13 || (PERL_VERSION == 13 && PERL_SUBVERSION < 9)
+# define PERL_HAS_BAD_MULTICALL_REFCOUNT
+#endif
+
MODULE=List::Util PACKAGE=List::Util
void
@@ -252,6 +256,10 @@ CODE:
MULTICALL;
SvSetSV(ret, *PL_stack_sp);
}
+#ifdef PERL_HAS_BAD_MULTICALL_REFCOUNT
+ if (CvDEPTH(multicall_cv) > 1)
+ SvREFCNT_inc_simple_void_NN(multicall_cv);
+#endif
POP_MULTICALL;
}
else {
@@ -300,11 +308,19 @@ CODE:
GvSV(PL_defgv) = args[index];
MULTICALL;
if (SvTRUEx(*PL_stack_sp)) {
+#ifdef PERL_HAS_BAD_MULTICALL_REFCOUNT
+ if (CvDEPTH(multicall_cv) > 1)
+ SvREFCNT_inc_simple_void_NN(multicall_cv);
+#endif
POP_MULTICALL;
ST(0) = ST(index);
XSRETURN(1);
}
}
+#ifdef PERL_HAS_BAD_MULTICALL_REFCOUNT
+ if (CvDEPTH(multicall_cv) > 1)
+ SvREFCNT_inc_simple_void_NN(multicall_cv);
+#endif
POP_MULTICALL;
}
else {
diff --git a/cpan/List-Util/lib/List/Util.pm b/cpan/List-Util/lib/List/Util.pm
index 39c4e7e903..5988aa914e 100644
--- a/cpan/List-Util/lib/List/Util.pm
+++ b/cpan/List-Util/lib/List/Util.pm
@@ -13,7 +13,7 @@ require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(first min max minstr maxstr reduce sum sum0 shuffle);
-our $VERSION = "1.26";
+our $VERSION = "1.27";
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
diff --git a/cpan/List-Util/lib/List/Util/XS.pm b/cpan/List-Util/lib/List/Util/XS.pm
index 1fca3e4576..01b944b5ab 100644
--- a/cpan/List-Util/lib/List/Util/XS.pm
+++ b/cpan/List-Util/lib/List/Util/XS.pm
@@ -2,7 +2,7 @@ package List::Util::XS;
use strict;
use List::Util;
-our $VERSION = "1.26"; # FIXUP
+our $VERSION = "1.27"; # FIXUP
$VERSION = eval $VERSION; # FIXUP
1;
diff --git a/cpan/List-Util/lib/Scalar/Util.pm b/cpan/List-Util/lib/Scalar/Util.pm
index b73f1e64f7..da22989349 100644
--- a/cpan/List-Util/lib/Scalar/Util.pm
+++ b/cpan/List-Util/lib/Scalar/Util.pm
@@ -26,7 +26,7 @@ our @EXPORT_OK = qw(
tainted
weaken
);
-our $VERSION = "1.26";
+our $VERSION = "1.27";
$VERSION = eval $VERSION;
our @EXPORT_FAIL;