Hello community,
here is the log from the commit of package perl-Scalar-List-Utils for
openSUSE:Factory checked in at 2019-08-15 15:42:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Scalar-List-Utils (Old)
and /work/SRC/openSUSE:Factory/.perl-Scalar-List-Utils.new.9556 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Scalar-List-Utils"
Thu Aug 15 15:42:56 2019 rev:15 rq:721982 version:1.51
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Scalar-List-Utils/perl-Scalar-List-Utils.changes
2018-02-26 23:22:58.387035609 +0100
+++
/work/SRC/openSUSE:Factory/.perl-Scalar-List-Utils.new.9556/perl-Scalar-List-Utils.changes
2019-08-15 15:42:59.983201006 +0200
@@ -1,0 +2,15 @@
+Fri Aug 9 05:26:27 UTC 2019 - Stephan Kulow <[email protected]>
+
+- updated to 1.51
+ see /usr/share/doc/packages/perl-Scalar-List-Utils/Changes
+
+ 1.51 -- 2019-08-08 14:31:32
+ [CHANGES]
+ * Add TO_JSON to List::Util::_Pair (thanks ilmari)
+ * Various minor docs fixes
+
+ [BUGFIXES]
+ * Don't segfault in subname() on deleted stashes (thanks ilmari)
+ * Fix uniqnum for large floats and numeric strings (thanks ilmari)
+
+-------------------------------------------------------------------
Old:
----
Scalar-List-Utils-1.50.tar.gz
New:
----
Scalar-List-Utils-1.51.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Scalar-List-Utils.spec ++++++
--- /var/tmp/diff_new_pack.t6ydmo/_old 2019-08-15 15:43:00.887200797 +0200
+++ /var/tmp/diff_new_pack.t6ydmo/_new 2019-08-15 15:43:00.887200797 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Scalar-List-Utils
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,18 +12,18 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: perl-Scalar-List-Utils
-Version: 1.50
+Version: 1.51
Release: 0
%define cpan_name Scalar-List-Utils
Summary: Common Scalar and List utility subroutines
License: Artistic-1.0 OR GPL-1.0-or-later
Group: Development/Libraries/Perl
-Url: http://search.cpan.org/dist/Scalar-List-Utils/
+Url: https://metacpan.org/release/%{cpan_name}
Source0:
https://cpan.metacpan.org/authors/id/P/PE/PEVANS/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -39,11 +39,11 @@
find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
+make %{?_smp_mflags}
%check
-%{__make} test
+make test
%install
%perl_make_install
++++++ Scalar-List-Utils-1.50.tar.gz -> Scalar-List-Utils-1.51.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/Changes
new/Scalar-List-Utils-1.51/Changes
--- old/Scalar-List-Utils-1.50/Changes 2018-02-20 20:24:25.000000000 +0100
+++ new/Scalar-List-Utils-1.51/Changes 2019-08-08 15:33:06.000000000 +0200
@@ -1,3 +1,12 @@
+1.51 -- 2019-08-08 14:31:32
+ [CHANGES]
+ * Add TO_JSON to List::Util::_Pair (thanks ilmari)
+ * Various minor docs fixes
+
+ [BUGFIXES]
+ * Don't segfault in subname() on deleted stashes (thanks ilmari)
+ * Fix uniqnum for large floats and numeric strings (thanks ilmari)
+
1.50 -- 2018-02-20 19:13:27
[CHANGES]
* Added head() and tail() functions (thanks preaction)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/ListUtil.xs
new/Scalar-List-Utils-1.51/ListUtil.xs
--- old/Scalar-List-Utils-1.50/ListUtil.xs 2018-02-20 20:09:32.000000000
+0100
+++ new/Scalar-List-Utils-1.51/ListUtil.xs 2019-08-06 14:12:28.000000000
+0200
@@ -1177,12 +1177,15 @@
/* clone the value so we don't invoke magic again */
arg = sv_mortalcopy(arg);
- if(SvUOK(arg))
+ if(SvOK(arg) && !(SvUOK(arg) || SvIOK(arg) || SvNOK(arg)))
+ SvNV(arg); /* sets SVf_IOK/SVf_UOK if it's an integer */
+
+ if(!SvOK(arg) || SvUOK(arg))
sv_setpvf(keysv, "%" UVuf, SvUV(arg));
else if(SvIOK(arg))
sv_setpvf(keysv, "%" IVdf, SvIV(arg));
else
- sv_setpvf(keysv, "%" NVgf, SvNV(arg));
+ sv_setpvf(keysv, "%.15" 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))
@@ -1601,15 +1604,18 @@
/* under debugger, provide information about sub location */
if (PL_DBsub && CvGV(cv)) {
HV* DBsub = GvHV(PL_DBsub);
- HE* old_data;
+ HE* old_data = NULL;
GV* oldgv = CvGV(cv);
HV* oldhv = GvSTASH(oldgv);
- SV* old_full_name = sv_2mortal(newSVpvn_flags(HvNAME(oldhv),
HvNAMELEN_get(oldhv), HvNAMEUTF8(oldhv) ? SVf_UTF8 : 0));
- sv_catpvn(old_full_name, "::", 2);
- sv_catpvn_flags(old_full_name, GvNAME(oldgv), GvNAMELEN(oldgv),
GvNAMEUTF8(oldgv) ? SV_CATUTF8 : SV_CATBYTES);
- old_data = hv_fetch_ent(DBsub, old_full_name, 0, 0);
+ if (oldhv) {
+ SV* old_full_name = sv_2mortal(newSVpvn_flags(HvNAME(oldhv),
HvNAMELEN_get(oldhv), HvNAMEUTF8(oldhv) ? SVf_UTF8 : 0));
+ sv_catpvn(old_full_name, "::", 2);
+ sv_catpvn_flags(old_full_name, GvNAME(oldgv), GvNAMELEN(oldgv),
GvNAMEUTF8(oldgv) ? SV_CATUTF8 : SV_CATBYTES);
+
+ old_data = hv_fetch_ent(DBsub, old_full_name, 0, 0);
+ }
if (old_data && HeVAL(old_data)) {
SV* new_full_name = sv_2mortal(newSVpvn_flags(HvNAME(stash),
HvNAMELEN_get(stash), HvNAMEUTF8(stash) ? SVf_UTF8 : 0));
@@ -1660,6 +1666,7 @@
PREINIT:
CV *cv;
GV *gv;
+ const char *stashname;
PPCODE:
if (!SvROK(code) && SvGMAGICAL(code))
mg_get(code);
@@ -1670,7 +1677,12 @@
if(!(gv = CvGV(cv)))
XSRETURN(0);
- mPUSHs(newSVpvf("%s::%s", HvNAME(GvSTASH(gv)), GvNAME(gv)));
+ if(GvSTASH(gv))
+ stashname = HvNAME(GvSTASH(gv));
+ else
+ stashname = "__ANON__";
+
+ mPUSHs(newSVpvf("%s::%s", stashname, GvNAME(gv)));
XSRETURN(1);
BOOT:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/META.json
new/Scalar-List-Utils-1.51/META.json
--- old/Scalar-List-Utils-1.50/META.json 2018-02-20 20:25:58.000000000
+0100
+++ new/Scalar-List-Utils-1.51/META.json 2019-08-08 15:34:32.000000000
+0200
@@ -4,13 +4,13 @@
"Graham Barr <[email protected]>"
],
"dynamic_config" : 0,
- "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter
version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter
version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
- "version" : "2"
+ "version" : 2
},
"name" : "Scalar-List-Utils",
"no_index" : {
@@ -49,6 +49,6 @@
"web" : "https://github.com/Scalar-List-Utils/Scalar-List-Utils"
}
},
- "version" : "1.50",
- "x_serialization_backend" : "JSON::PP version 2.27400_02"
+ "version" : "1.51",
+ "x_serialization_backend" : "JSON::PP version 2.97001"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/META.yml
new/Scalar-List-Utils-1.51/META.yml
--- old/Scalar-List-Utils-1.50/META.yml 2018-02-20 20:25:58.000000000 +0100
+++ new/Scalar-List-Utils-1.51/META.yml 2019-08-08 15:34:32.000000000 +0200
@@ -7,7 +7,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
-generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version
2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -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.50'
+version: '1.51'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/lib/List/Util/XS.pm
new/Scalar-List-Utils-1.51/lib/List/Util/XS.pm
--- old/Scalar-List-Utils-1.50/lib/List/Util/XS.pm 2018-02-20
20:25:27.000000000 +0100
+++ new/Scalar-List-Utils-1.51/lib/List/Util/XS.pm 2019-08-08
15:33:37.000000000 +0200
@@ -3,8 +3,8 @@
use warnings;
use List::Util;
-our $VERSION = "1.50"; # FIXUP
-$VERSION = eval $VERSION; # FIXUP
+our $VERSION = "1.51"; # FIXUP
+$VERSION =~ tr/_//d; # FIXUP
1;
__END__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/lib/List/Util.pm
new/Scalar-List-Utils-1.51/lib/List/Util.pm
--- old/Scalar-List-Utils-1.50/lib/List/Util.pm 2018-02-20 20:25:27.000000000
+0100
+++ new/Scalar-List-Utils-1.51/lib/List/Util.pm 2019-08-08 15:33:37.000000000
+0200
@@ -15,9 +15,9 @@
all any first min max minstr maxstr none notall product reduce sum sum0
shuffle uniq uniqnum uniqstr
head tail pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst
);
-our $VERSION = "1.50";
+our $VERSION = "1.51";
our $XS_VERSION = $VERSION;
-$VERSION = eval $VERSION;
+$VERSION =~ tr/_//d;
require XSLoader;
XSLoader::load('List::Util', $XS_VERSION);
@@ -38,6 +38,7 @@
# For objects returned by pairs()
sub List::Util::_Pair::key { shift->[0] }
sub List::Util::_Pair::value { shift->[1] }
+sub List::Util::_Pair::TO_JSON { [ @{+shift} ] }
=head1 NAME
@@ -341,6 +342,9 @@
...
}
+Since version C<1.51> they also have a C<TO_JSON> method to ease
+serialisation.
+
=head2 unpairs
my @kvlist = unpairs @pairs
@@ -557,6 +561,8 @@
my @values = head $size, @list;
+I<Since version 1.50.>
+
Returns the first C<$size> elements from C<@list>. If C<$size> is negative,
returns
all but the last C<$size> elements from C<@list>.
@@ -570,6 +576,8 @@
my @values = tail $size, @list;
+I<Since version 1.50.>
+
Returns the last C<$size> elements from C<@list>. If C<$size> is negative,
returns
all but the first C<$size> elements from C<@list>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/lib/Scalar/Util.pm
new/Scalar-List-Utils-1.51/lib/Scalar/Util.pm
--- old/Scalar-List-Utils-1.50/lib/Scalar/Util.pm 2018-02-20
20:25:27.000000000 +0100
+++ new/Scalar-List-Utils-1.51/lib/Scalar/Util.pm 2019-08-08
15:33:37.000000000 +0200
@@ -17,8 +17,8 @@
dualvar isdual isvstring looks_like_number openhandle readonly set_prototype
tainted
);
-our $VERSION = "1.50";
-$VERSION = eval $VERSION;
+our $VERSION = "1.51";
+$VERSION =~ tr/_//d;
require List::Util; # List::Util loads the XS
List::Util->VERSION( $VERSION ); # Ensure we got the right XS version
(RT#100863)
@@ -276,8 +276,8 @@
my $fh = openhandle( $fh );
-Returns C<$fh> itself if C<$fh> may be used as a filehandle and is open, or is
-is a tied handle. Otherwise C<undef> is returned.
+Returns C<$fh> itself, if C<$fh> may be used as a filehandle and is open, or if
+it is a tied handle. Otherwise C<undef> is returned.
$fh = openhandle(*STDIN); # \*STDIN
$fh = openhandle(\*STDIN); # \*STDIN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/lib/Sub/Util.pm
new/Scalar-List-Utils-1.51/lib/Sub/Util.pm
--- old/Scalar-List-Utils-1.50/lib/Sub/Util.pm 2018-02-20 20:25:27.000000000
+0100
+++ new/Scalar-List-Utils-1.51/lib/Sub/Util.pm 2019-08-08 15:33:37.000000000
+0200
@@ -15,8 +15,8 @@
subname set_subname
);
-our $VERSION = "1.50";
-$VERSION = eval $VERSION;
+our $VERSION = "1.51";
+$VERSION =~ tr/_//d;
require List::Util; # as it has the XS
List::Util->VERSION( $VERSION ); # Ensure we got the right XS version
(RT#100863)
@@ -95,8 +95,10 @@
Returns the name of the given C<$code> reference, if it has one. Normal named
subs will give a fully-qualified name consisting of the package and the
localname separated by C<::>. Anonymous code references will give C<__ANON__>
-as the localname. If a name has been set using L</set_subname>, this name will
-be returned instead.
+as the localname. If the package the code was compiled in has been deleted
+(e.g. using C<delete_package> from L<Symbol>), C<__ANON__> will be returned as
+the package name. If a name has been set using L</set_subname>, this name will
be
+returned instead.
This function was inspired by C<sub_fullname> from L<Sub::Identify>. The
remaining functions that C<Sub::Identify> implements can easily be emulated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/t/pair.t
new/Scalar-List-Utils-1.51/t/pair.t
--- old/Scalar-List-Utils-1.50/t/pair.t 2018-02-20 20:25:27.000000000 +0100
+++ new/Scalar-List-Utils-1.51/t/pair.t 2019-08-08 15:33:37.000000000 +0200
@@ -3,8 +3,9 @@
use strict;
use warnings;
-use Test::More tests => 27;
+use Test::More tests => 29;
use List::Util qw(pairgrep pairfirst pairmap pairs unpairs pairkeys
pairvalues);
+use Scalar::Util qw(blessed);
no warnings 'misc'; # avoid "Odd number of elements" warnings most of the time
@@ -104,6 +105,10 @@
my @p = pairs one => 1, two => 2;
is( $p[0]->key, "one", 'pairs ->key' );
is( $p[0]->value, 1, 'pairs ->value' );
+ is_deeply( $p[0]->TO_JSON,
+ [ one => 1 ],
+ 'pairs ->TO_JSON' );
+ ok( !blessed($p[0]->TO_JSON) , 'pairs ->TO_JSON is not blessed' );
}
is_deeply( [ unpairs [ four => 4 ], [ five => 5 ], [ six => 6 ] ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/t/subname.t
new/Scalar-List-Utils-1.51/t/subname.t
--- old/Scalar-List-Utils-1.50/t/subname.t 2018-02-20 20:25:27.000000000
+0100
+++ new/Scalar-List-Utils-1.51/t/subname.t 2019-08-08 15:33:37.000000000
+0200
@@ -3,10 +3,11 @@
BEGIN { $^P |= 0x210 }
-use Test::More tests => 18;
+use Test::More tests => 21;
use B::Deparse;
use Sub::Util qw( subname set_subname );
+use Symbol qw( delete_package ) ;
{
sub localfunc {}
@@ -78,4 +79,18 @@
'subname of set_subname');
}
+# this used to segfault
+
+{
+ sub ToDelete::foo {}
+
+ my $foo = \&ToDelete::foo;
+
+ delete_package 'ToDelete';
+
+ is( subname($foo), "$]" >= 5.010 ? '__ANON__::foo' : 'ToDelete::foo',
'subname in deleted package' );
+ ok( set_subname('NewPackage::foo', $foo), 'rename from deleted package' );
+ is( subname($foo), 'NewPackage::foo', 'subname after rename' );
+}
+
# vim: ft=perl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Scalar-List-Utils-1.50/t/uniq.t
new/Scalar-List-Utils-1.51/t/uniq.t
--- old/Scalar-List-Utils-1.50/t/uniq.t 2018-02-20 20:25:27.000000000 +0100
+++ new/Scalar-List-Utils-1.51/t/uniq.t 2019-08-08 15:33:37.000000000 +0200
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More tests => 30;
+use Test::More tests => 33;
use List::Util qw( uniqnum uniqstr uniq );
use Tie::Array;
@@ -75,6 +75,18 @@
[ 1, 1.1, 1.2, 1.3 ],
'uniqnum distinguishes floats' );
+{
+ my @nums = map $_+0.1, 1e7..1e7+5;
+ is_deeply( [ uniqnum @nums ],
+ [ @nums ],
+ 'uniqnum distinguishes large floats' );
+
+ my @strings = map "$_", @nums;
+ is_deeply( [ uniqnum @strings ],
+ [ @strings ],
+ 'uniqnum distinguishes large floats (stringified)' );
+}
+
# Hard to know for sure what an Inf is going to be. Lets make one
my $Inf = 0 + 1E1000;
my $NaN;
@@ -84,7 +96,7 @@
[ 0, 1, 12345, $Inf, -$Inf, $NaN ],
'uniqnum preserves the special values of +-Inf and Nan' );
-{
+SKIP: {
my $maxuint = ~0;
my $maxint = ~0 >> 1;
my $minint = -(~0 >> 1) - 1;
@@ -94,6 +106,15 @@
is_deeply( [ uniqnum @nums, 1.0 ],
[ @nums ],
'uniqnum preserves uniqness of full integer range' );
+
+ my @strs = map "$_", @nums;
+
+ skip( "Perl $] doesn't stringify UV_MAX right ($maxuint)", 1 )
+ if $maxuint !~ /\A[0-9]+\z/;
+
+ is_deeply( [ uniqnum @strs, "1.0" ],
+ [ @strs ],
+ 'uniqnum preserves uniqness of full integer range
(stringified)' );
}
{