Hello community,
here is the log from the commit of package perl-Scalar-List-Utils for
openSUSE:Factory checked in at 2017-06-27 10:20:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Scalar-List-Utils (Old)
and /work/SRC/openSUSE:Factory/.perl-Scalar-List-Utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Scalar-List-Utils"
Tue Jun 27 10:20:35 2017 rev:12 rq:506079 version:1.48
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Scalar-List-Utils/perl-Scalar-List-Utils.changes
2017-01-15 11:11:14.892446993 +0100
+++
/work/SRC/openSUSE:Factory/.perl-Scalar-List-Utils.new/perl-Scalar-List-Utils.changes
2017-06-27 10:20:36.404839363 +0200
@@ -1,0 +2,15 @@
+Sat Jun 24 06:19:49 UTC 2017 - [email protected]
+
+- updated to 1.48
+ see /usr/share/doc/packages/perl-Scalar-List-Utils/Changes
+
+ 1.48 -- 2017/06/23 17:29:42
+ [CHANGES]
+ * Note in documentation that outer function's @_ can be accessed in
+ some blocks, but ought not be (thanks wchristian)
+
+ [BUGFIXES]
+ * Ensure pairmap extends its stack correctly (thanks davem)
+ * Fix name of List::Util::unpairs in its error messages
+
+-------------------------------------------------------------------
Old:
----
Scalar-List-Utils-1.47.tar.gz
New:
----
Scalar-List-Utils-1.48.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Scalar-List-Utils.spec ++++++
--- /var/tmp/diff_new_pack.UEMkBx/_old 2017-06-27 10:20:37.024751747 +0200
+++ /var/tmp/diff_new_pack.UEMkBx/_new 2017-06-27 10:20:37.024751747 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Scalar-List-Utils
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,14 @@
Name: perl-Scalar-List-Utils
-Version: 1.47
+Version: 1.48
Release: 0
%define cpan_name Scalar-List-Utils
Summary: Common Scalar and List utility subroutines
License: Artistic-1.0 or GPL-1.0+
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/Scalar-List-Utils/
-Source0:
http://www.cpan.org/authors/id/P/PE/PEVANS/%{cpan_name}-%{version}.tar.gz
+Source0:
https://cpan.metacpan.org/authors/id/P/PE/PEVANS/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
++++++ Scalar-List-Utils-1.47.tar.gz -> Scalar-List-Utils-1.48.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/Changes
new/Scalar-List-Utils-1.48/Changes
--- old/Scalar-List-Utils-1.47/Changes 2016-12-22 19:57:50.000000000 +0100
+++ new/Scalar-List-Utils-1.48/Changes 2017-06-23 18:30:58.000000000 +0200
@@ -1,3 +1,12 @@
+1.48 -- 2017/06/23 17:29:42
+ [CHANGES]
+ * Note in documentation that outer function's @_ can be accessed in
+ some blocks, but ought not be (thanks wchristian)
+
+ [BUGFIXES]
+ * Ensure pairmap extends its stack correctly (thanks davem)
+ * Fix name of List::Util::unpairs in its error messages
+
1.47 -- 2016/12/22 18:54:45
[CHANGES]
* Make XS code ppport.h-free when in core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/ListUtil.xs
new/Scalar-List-Utils-1.48/ListUtil.xs
--- old/Scalar-List-Utils-1.47/ListUtil.xs 2016-12-14 21:27:00.000000000
+0100
+++ new/Scalar-List-Utils-1.48/ListUtil.xs 2017-06-23 18:26:18.000000000
+0200
@@ -636,9 +636,9 @@
SvGETMAGIC(pair);
if(SvTYPE(pair) != SVt_RV)
- croak("Not a reference at List::Util::unpack() argument %d", i);
+ croak("Not a reference at List::Util::unpairs() argument %d", i);
if(SvTYPE(SvRV(pair)) != SVt_PVAV)
- croak("Not an ARRAY reference at List::Util::unpack() argument
%d", i);
+ croak("Not an ARRAY reference at List::Util::unpairs() argument
%d", i);
/* TODO: assert pair is an ARRAY ref */
pairav = (AV *)SvRV(pair);
@@ -905,6 +905,7 @@
SV **stack = PL_stack_base + ax;
I32 ret_gimme = GIMME_V;
int i;
+ AV *spill = NULL; /* accumulates results if too big for stack */
dMULTICALL;
I32 gimme = G_ARRAY;
@@ -914,41 +915,64 @@
for(; argi < items; argi += 2) {
int count;
- GvSV(agv) = args_copy ? args_copy[argi] : stack[argi];
- GvSV(bgv) = argi < items-1 ?
- (args_copy ? args_copy[argi+1] : stack[argi+1]) :
- &PL_sv_undef;
+ GvSV(agv) = stack[argi];
+ GvSV(bgv) = argi < items-1 ? stack[argi+1]: &PL_sv_undef;
MULTICALL;
count = PL_stack_sp - PL_stack_base;
- if(count > 2 && !args_copy) {
+ if (count > 2 || spill) {
/* We can't return more than 2 results for a given input pair
- * without trashing the remaining argmuents on the stack still
- * to be processed. So, we'll copy them out to a temporary
- * buffer and work from there instead.
+ * without trashing the remaining arguments on the stack still
+ * to be processed, or possibly overrunning the stack end.
+ * So, we'll accumulate the results in a temporary buffer
+ * instead.
* We didn't do this initially because in the common case, most
* code blocks will return only 1 or 2 items so it won't be
* necessary
*/
- int n_args = items - argi;
- Newx(args_copy, n_args, SV *);
- SAVEFREEPV(args_copy);
+ int fill;
- Copy(stack + argi, args_copy, n_args, SV *);
+ if (!spill) {
+ spill = newAV();
+ AvREAL_off(spill); /* don't ref count its contents */
+ /* can't mortalize here as every nextstate in the code
+ * block frees temps */
+ SAVEFREESV(spill);
+ }
- argi = 0;
- items = n_args;
+ fill = (int)AvFILL(spill);
+ av_extend(spill, fill + count);
+ for(i = 0; i < count; i++)
+ (void)av_store(spill, ++fill,
+ newSVsv(PL_stack_base[i + 1]));
}
-
- for(i = 0; i < count; i++)
- stack[reti++] = newSVsv(PL_stack_sp[i - count + 1]);
+ else
+ for(i = 0; i < count; i++)
+ stack[reti++] = newSVsv(PL_stack_base[i + 1]);
}
+
+ if (spill)
+ /* the POP_MULTICALL will trigger the SAVEFREESV above;
+ * keep it alive it on the temps stack instead */
+ SvREFCNT_inc_simple_void_NN(spill);
+ sv_2mortal((SV*)spill);
+
POP_MULTICALL;
+ if (spill) {
+ int n = (int)AvFILL(spill) + 1;
+ SP = &ST(reti - 1);
+ EXTEND(SP, n);
+ for (i = 0; i < n; i++)
+ *++SP = *av_fetch(spill, i, FALSE);
+ reti += n;
+ av_clear(spill);
+ }
+
if(ret_gimme == G_ARRAY)
for(i = 0; i < reti; i++)
- sv_2mortal(stack[i]);
+ sv_2mortal(ST(i));
}
else
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/META.json
new/Scalar-List-Utils-1.48/META.json
--- old/Scalar-List-Utils-1.47/META.json 2016-12-22 19:59:22.000000000
+0100
+++ new/Scalar-List-Utils-1.48/META.json 2017-06-23 18:32:10.000000000
+0200
@@ -49,6 +49,6 @@
"web" : "https://github.com/Scalar-List-Utils/Scalar-List-Utils"
}
},
- "version" : "1.47",
+ "version" : "1.48",
"x_serialization_backend" : "JSON::PP version 2.27300_01"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/META.yml
new/Scalar-List-Utils-1.48/META.yml
--- old/Scalar-List-Utils-1.47/META.yml 2016-12-22 19:59:22.000000000 +0100
+++ new/Scalar-List-Utils-1.48/META.yml 2017-06-23 18:32:10.000000000 +0200
@@ -23,5 +23,5 @@
resources:
bugtracker:
https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils
repository: https://github.com/Scalar-List-Utils/Scalar-List-Utils.git
-version: '1.47'
+version: '1.48'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/lib/List/Util/XS.pm
new/Scalar-List-Utils-1.48/lib/List/Util/XS.pm
--- old/Scalar-List-Utils-1.47/lib/List/Util/XS.pm 2016-12-22
19:54:12.000000000 +0100
+++ new/Scalar-List-Utils-1.48/lib/List/Util/XS.pm 2017-06-23
18:28:54.000000000 +0200
@@ -3,7 +3,7 @@
use warnings;
use List::Util;
-our $VERSION = "1.47"; # FIXUP
+our $VERSION = "1.48"; # FIXUP
$VERSION = eval $VERSION; # FIXUP
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/lib/List/Util.pm
new/Scalar-List-Utils-1.48/lib/List/Util.pm
--- old/Scalar-List-Utils-1.47/lib/List/Util.pm 2016-12-22 19:54:12.000000000
+0100
+++ new/Scalar-List-Utils-1.48/lib/List/Util.pm 2017-06-23 18:28:54.000000000
+0200
@@ -15,7 +15,7 @@
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.47";
+our $VERSION = "1.48";
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -149,6 +149,9 @@
# at least one string has more than 10 characters
}
+Note: Due to XS issues the block passed may be able to access the outer @_
+directly. This is not intentional and will break under debugger.
+
=head2 all
my $bool = all { BLOCK } @list;
@@ -160,6 +163,9 @@
false. If the C<BLOCK> never returns false or the C<@list> was empty then it
returns true.
+Note: Due to XS issues the block passed may be able to access the outer @_
+directly. This is not intentional and will break under debugger.
+
=head2 none
=head2 notall
@@ -174,6 +180,9 @@
returns true only if no value in the C<@list> causes the C<BLOCK> to return
true, and C<notall> returns true only if not all of the values do.
+Note: Due to XS issues the block passed may be able to access the outer @_
+directly. This is not intentional and will break under debugger.
+
=head2 first
my $val = first { BLOCK } @list;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/lib/Scalar/Util.pm
new/Scalar-List-Utils-1.48/lib/Scalar/Util.pm
--- old/Scalar-List-Utils-1.47/lib/Scalar/Util.pm 2016-12-22
19:54:12.000000000 +0100
+++ new/Scalar-List-Utils-1.48/lib/Scalar/Util.pm 2017-06-23
18:28:54.000000000 +0200
@@ -17,7 +17,7 @@
dualvar isdual isvstring looks_like_number openhandle readonly set_prototype
tainted
);
-our $VERSION = "1.47";
+our $VERSION = "1.48";
$VERSION = eval $VERSION;
require List::Util; # List::Util loads the XS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/lib/Sub/Util.pm
new/Scalar-List-Utils-1.48/lib/Sub/Util.pm
--- old/Scalar-List-Utils-1.47/lib/Sub/Util.pm 2016-12-22 19:54:12.000000000
+0100
+++ new/Scalar-List-Utils-1.48/lib/Sub/Util.pm 2017-06-23 18:28:54.000000000
+0200
@@ -15,7 +15,7 @@
subname set_subname
);
-our $VERSION = "1.47";
+our $VERSION = "1.48";
$VERSION = eval $VERSION;
require List::Util; # as it has the XS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.47/t/pair.t
new/Scalar-List-Utils-1.48/t/pair.t
--- old/Scalar-List-Utils-1.47/t/pair.t 2016-12-22 19:54:12.000000000 +0100
+++ new/Scalar-List-Utils-1.48/t/pair.t 2017-06-23 18:28:54.000000000 +0200
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More tests => 26;
+use Test::More tests => 27;
use List::Util qw(pairgrep pairfirst pairmap pairs unpairs pairkeys
pairvalues);
no warnings 'misc'; # avoid "Odd number of elements" warnings most of the time
@@ -82,6 +82,16 @@
[ "one=1", "two=2", "three=3" ],
'pairmap copes with stack movement' );
+{
+ # do the pairmap and is_deeply as two separate statements to avoid
+ # the stack being extended before pairmap is called
+ my @a = pairmap { $a .. $b }
+ 1 => 3, 4 => 4, 5 => 6, 7 => 1998, 1999 => 2000;
+ my @exp; push @exp, $_ for 1..2000;
+ is_deeply( \@a, \@exp,
+ 'pairmap result has more elements than input' );
+}
+
is_deeply( [ pairs one => 1, two => 2, three => 3 ],
[ [ one => 1 ], [ two => 2 ], [ three => 3 ] ],
'pairs' );