Upgrade to 5.30.0

This commit is contained in:
Jitka Plesnikova 2019-05-30 08:30:30 +02:00
parent 51b53cd3f9
commit ffbaa94ebd
44 changed files with 334 additions and 3564 deletions

1
.gitignore vendored
View File

@ -30,3 +30,4 @@ perl-5.12.1.tar.gz
/perl-5.28.0.tar.xz
/perl-5.28.1.tar.xz
/perl-5.28.2.tar.xz
/perl-5.30.0.tar.xz

View File

@ -25,9 +25,9 @@ Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Archive::Tar) = 2.30 \
Provides: perl(Archive::Tar::Constant) = 2.30 \
Provides: perl(Archive::Tar::File) = 2.30 \
Provides: perl(Archive::Tar) = 2.32 \
Provides: perl(Archive::Tar::Constant) = 2.32 \
Provides: perl(Archive::Tar::File) = 2.32 \
%{nil}
%global gendep_perl_Attribute_Handlers \
Requires: perl(:VERSION) >= 5.6.0 \
@ -36,13 +36,6 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Attribute::Handlers) = 1.01 \
%{nil}
%global gendep_perl_B_Debug \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(B) \
Requires: perl(Config) \
Requires: perl(strict) \
Provides: perl(B::Debug) = 1.26 \
%{nil}
%global gendep_perl_CPAN \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(App::Cpan) \
@ -103,15 +96,15 @@ Requires: perl(overload) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(App::Cpan) = 1.67 \
Provides: perl(CPAN) = 2.20 \
Provides: perl(App::Cpan) = 1.672 \
Provides: perl(CPAN) = 2.22 \
Provides: perl(CPAN::Author) = 5.5002 \
Provides: perl(CPAN::Bundle) = 5.5003 \
Provides: perl(CPAN::CacheMgr) = 5.5002 \
Provides: perl(CPAN::Complete) = 5.5001 \
Provides: perl(CPAN::Debug) = 5.5001 \
Provides: perl(CPAN::DeferredCode) = 5.50 \
Provides: perl(CPAN::Distribution) = 2.19 \
Provides: perl(CPAN::Distribution) = 2.22 \
Provides: perl(CPAN::Distroprefs) = 6.0001 \
Provides: perl(CPAN::Distroprefs::Iterator) \
Provides: perl(CPAN::Distroprefs::Pref) \
@ -138,15 +131,15 @@ Provides: perl(CPAN::InfoObj) = 5.5 \
Provides: perl(CPAN::Kwalify) = 5.50 \
Provides: perl(CPAN::LWP::UserAgent) = 1.9601 \
Provides: perl(CPAN::Mirrored::By) \
Provides: perl(CPAN::Mirrors) = 2.12 \
Provides: perl(CPAN::Mirrors) = 2.21 \
Provides: perl(CPAN::Module) = 5.5003 \
Provides: perl(CPAN::Nox) = 5.5001 \
Provides: perl(CPAN::Plugin) = 0.96 \
Provides: perl(CPAN::Plugin::Specfile) = 0.01 \
Provides: perl(CPAN::Plugin) = 0.97 \
Provides: perl(CPAN::Plugin::Specfile) = 0.02 \
Provides: perl(CPAN::Prompt) = 5.5 \
Provides: perl(CPAN::Queue) = 5.5002 \
Provides: perl(CPAN::Queue::Item) \
Provides: perl(CPAN::Shell) = 5.5007 \
Provides: perl(CPAN::Shell) = 5.5008 \
Provides: perl(CPAN::Tarzip) = 5.5012 \
Provides: perl(CPAN::URL) = 5.5 \
Provides: perl(CPAN::Version) = 5.5003 \
@ -209,7 +202,7 @@ Requires: perl(bytes) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Compress::Raw::Bzip2) = 2.074 \
Provides: perl(Compress::Raw::Bzip2) = 2.084 \
%{nil}
%global gendep_perl_Compress_Raw_Bzip2_debuginfo \
%{nil}
@ -221,7 +214,7 @@ Requires: perl(bytes) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Compress::Raw::Zlib) = 2.076 \
Provides: perl(Compress::Raw::Zlib) = 2.084 \
%{nil}
%global gendep_perl_Compress_Raw_Zlib_debuginfo \
%{nil}
@ -231,7 +224,7 @@ Requires: perl(Exporter) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Config::Perl::V) = 0.29 \
Provides: perl(Config::Perl::V) = 0.32 \
%{nil}
%global gendep_perl_DB_File \
Requires: perl(:VERSION) >= 5.8.3 \
@ -241,7 +234,7 @@ Requires: perl(File::Spec) \
Requires: perl(Tie::Hash) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(DB_File) = 1.840 \
Provides: perl(DB_File) = 1.843 \
Provides: perl(DB_File::BTREEINFO) \
Provides: perl(DB_File::HASHINFO) \
Provides: perl(DB_File::RECNOINFO) \
@ -253,19 +246,19 @@ Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
Requires: perl(Exporter) \
Requires: perl(constant) \
Provides: perl(Data::Dumper) = 2.170 \
Provides: perl(Data::Dumper) = 2.174 \
%{nil}
%global gendep_perl_Data_Dumper_debuginfo \
%{nil}
%global gendep_perl_Devel_PPPort \
Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(Devel::PPPort) = 3.40 \
Provides: perl(Devel::PPPort) = 3.52 \
%{nil}
%global gendep_perl_Devel_Peek \
Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Provides: perl(Devel::Peek) = 1.27 \
Provides: perl(Devel::Peek) = 1.28 \
%{nil}
%global gendep_perl_Devel_Peek_debuginfo \
%{nil}
@ -302,7 +295,7 @@ Requires: perl(integer) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Digest::SHA) = 6.01 \
Provides: perl(Digest::SHA) = 6.02 \
%{nil}
%global gendep_perl_Digest_SHA_debuginfo \
%{nil}
@ -338,7 +331,7 @@ Requires: perl(strict) \
Requires: perl(utf8) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Encode) = 2.97 \
Provides: perl(Encode) = 3.01 \
Provides: perl(Encode::Alias) = 2.24 \
Provides: perl(Encode::Byte) = 2.4 \
Provides: perl(Encode::CJKConstants) = 2.2 \
@ -362,7 +355,7 @@ Provides: perl(Encode::MIME::Name) = 1.3 \
Provides: perl(Encode::Symbol) = 2.2 \
Provides: perl(Encode::TW) = 2.3 \
Provides: perl(Encode::UTF_EBCDIC) \
Provides: perl(Encode::Unicode) = 2.17 \
Provides: perl(Encode::Unicode) = 2.18 \
Provides: perl(Encode::Unicode::UTF7) = 2.10 \
Provides: perl(Encode::XS) \
Provides: perl(Encode::utf8) \
@ -389,7 +382,7 @@ Provides: perl(Env::Array::VMS) \
Requires: perl(Config) \
Requires: perl(Exporter) \
Requires: perl(strict) \
Provides: perl(Errno) = 1.29 \
Provides: perl(Errno) = 1.30 \
%{nil}
%global gendep_perl_Exporter \
Requires: perl(:VERSION) >= 5.6.0 \
@ -415,21 +408,21 @@ Requires: perl(Text::ParseWords) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(ExtUtils::CBuilder) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Base) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::Unix) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::VMS) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::BCC) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::GCC) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::MSVC) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::aix) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::android) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::cygwin) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::darwin) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::dec_osf) = 0.280230 \
Provides: perl(ExtUtils::CBuilder) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Base) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::Unix) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::VMS) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::BCC) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::GCC) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::Windows::MSVC) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::aix) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::android) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::cygwin) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::darwin) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::dec_osf) = 0.280231 \
Provides: perl(ExtUtils::CBuilder::Platform::linux) = 0.280206 \
Provides: perl(ExtUtils::CBuilder::Platform::os2) = 0.280230 \
Provides: perl(ExtUtils::CBuilder::Platform::os2) = 0.280231 \
%{nil}
%global gendep_perl_ExtUtils_Command \
Requires: perl(:VERSION) >= 5.5.30 \
@ -542,13 +535,13 @@ Requires: perl(File::Find) \
Requires: perl(File::Spec) >= 0.8 \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(ExtUtils::Manifest) = 1.70 \
Provides: perl(ExtUtils::Manifest) = 1.72 \
%{nil}
%global gendep_perl_ExtUtils_Miniperl \
Requires: perl(Exporter) \
Requires: perl(ExtUtils::Embed) >= 1.31 \
Requires: perl(strict) \
Provides: perl(ExtUtils::Miniperl) = 1.08 \
Provides: perl(ExtUtils::Miniperl) = 1.09 \
%{nil}
%global gendep_perl_ExtUtils_ParseXS \
Requires: perl(:VERSION) >= 5.6.0 \
@ -570,11 +563,11 @@ Requires: perl(Symbol) \
Requires: perl(re) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(ExtUtils::ParseXS) = 3.39 \
Provides: perl(ExtUtils::ParseXS::Constants) = 3.39 \
Provides: perl(ExtUtils::ParseXS::CountLines) = 3.39 \
Provides: perl(ExtUtils::ParseXS::Eval) = 3.39 \
Provides: perl(ExtUtils::ParseXS::Utilities) = 3.39 \
Provides: perl(ExtUtils::ParseXS) = 3.40 \
Provides: perl(ExtUtils::ParseXS::Constants) = 3.40 \
Provides: perl(ExtUtils::ParseXS::CountLines) = 3.40 \
Provides: perl(ExtUtils::ParseXS::Eval) = 3.40 \
Provides: perl(ExtUtils::ParseXS::Utilities) = 3.40 \
Provides: perl(ExtUtils::Typemaps) = 3.38 \
Provides: perl(ExtUtils::Typemaps::Cmd) = 3.38 \
Provides: perl(ExtUtils::Typemaps::InputMap) = 3.38 \
@ -608,7 +601,7 @@ Requires: perl(File::Basename) \
Requires: perl(File::Spec) \
Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(File::Path) = 2.15 \
Provides: perl(File::Path) = 2.16 \
%{nil}
%global gendep_perl_File_Temp \
Requires: perl(:VERSION) >= 5.6.0 \
@ -627,9 +620,7 @@ Requires: perl(constant) \
Requires: perl(overload) \
Requires: perl(parent) >= 0.221 \
Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(File::Temp) = 0.2304 \
Provides: perl(File::Temp::Dir) \
Provides: perl(File::Temp) = 0.2309 \
%{nil}
%global gendep_perl_Filter \
Requires: perl(:VERSION) >= 5.6.0 \
@ -637,7 +628,7 @@ Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Filter::Util::Call) = 1.58 \
Provides: perl(Filter::Util::Call) = 1.59 \
%{nil}
%global gendep_perl_Filter_Simple \
Requires: perl(Carp) \
@ -665,7 +656,7 @@ Requires: perl(IO::Socket) \
Requires: perl(Socket) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(HTTP::Tiny) = 0.070 \
Provides: perl(HTTP::Tiny) = 0.076 \
%{nil}
%global gendep_perl_IO \
Requires: perl(:VERSION) >= 5.8.0 \
@ -690,51 +681,51 @@ Requires: perl(XSLoader) \
Requires: perl(strict) \
Requires: perl(warnings) \
Requires: perl(warnings::register) \
Provides: perl(IO) = 1.39 \
Provides: perl(IO::Dir) = 1.39 \
Provides: perl(IO::File) = 1.39 \
Provides: perl(IO::Handle) = 1.39 \
Provides: perl(IO::Pipe) = 1.39 \
Provides: perl(IO) = 1.40 \
Provides: perl(IO::Dir) = 1.40 \
Provides: perl(IO::File) = 1.40 \
Provides: perl(IO::Handle) = 1.40 \
Provides: perl(IO::Pipe) = 1.40 \
Provides: perl(IO::Pipe::End) \
Provides: perl(IO::Poll) = 1.39 \
Provides: perl(IO::Seekable) = 1.39 \
Provides: perl(IO::Select) = 1.39 \
Provides: perl(IO::Socket) = 1.39 \
Provides: perl(IO::Socket::INET) = 1.39 \
Provides: perl(IO::Socket::UNIX) = 1.39 \
Provides: perl(IO::Poll) = 1.40 \
Provides: perl(IO::Seekable) = 1.40 \
Provides: perl(IO::Select) = 1.40 \
Provides: perl(IO::Socket) = 1.40 \
Provides: perl(IO::Socket::INET) = 1.40 \
Provides: perl(IO::Socket::UNIX) = 1.40 \
%{nil}
%global gendep_perl_IO_Compress \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
Requires: perl(Compress::Raw::Bzip2) >= 2.074 \
Requires: perl(Compress::Raw::Zlib) >= 2.074 \
Requires: perl(Compress::Raw::Bzip2) >= 2.084 \
Requires: perl(Compress::Raw::Zlib) >= 2.084 \
Requires: perl(Config) \
Requires: perl(Encode) \
Requires: perl(Exporter) \
Requires: perl(Fcntl) \
Requires: perl(File::GlobMapper) \
Requires: perl(File::Spec) \
Requires: perl(IO::Compress::Adapter::Bzip2) >= 2.074 \
Requires: perl(IO::Compress::Adapter::Deflate) >= 2.074 \
Requires: perl(IO::Compress::Adapter::Identity) >= 2.074 \
Requires: perl(IO::Compress::Base) >= 2.074 \
Requires: perl(IO::Compress::Base::Common) >= 2.074 \
Requires: perl(IO::Compress::Gzip) >= 2.074 \
Requires: perl(IO::Compress::Gzip::Constants) >= 2.074 \
Requires: perl(IO::Compress::RawDeflate) >= 2.074 \
Requires: perl(IO::Compress::Zip::Constants) >= 2.074 \
Requires: perl(IO::Compress::Zlib::Constants) >= 2.074 \
Requires: perl(IO::Compress::Zlib::Extra) >= 2.074 \
Requires: perl(IO::Compress::Adapter::Bzip2) >= 2.084 \
Requires: perl(IO::Compress::Adapter::Deflate) >= 2.084 \
Requires: perl(IO::Compress::Adapter::Identity) >= 2.084 \
Requires: perl(IO::Compress::Base) >= 2.084 \
Requires: perl(IO::Compress::Base::Common) >= 2.084 \
Requires: perl(IO::Compress::Gzip) >= 2.084 \
Requires: perl(IO::Compress::Gzip::Constants) >= 2.084 \
Requires: perl(IO::Compress::RawDeflate) >= 2.084 \
Requires: perl(IO::Compress::Zip::Constants) >= 2.084 \
Requires: perl(IO::Compress::Zlib::Constants) >= 2.084 \
Requires: perl(IO::Compress::Zlib::Extra) >= 2.084 \
Requires: perl(IO::File) \
Requires: perl(IO::Handle) \
Requires: perl(IO::Uncompress::Adapter::Bunzip2) >= 2.074 \
Requires: perl(IO::Uncompress::Adapter::Identity) >= 2.074 \
Requires: perl(IO::Uncompress::Adapter::Inflate) >= 2.074 \
Requires: perl(IO::Uncompress::Base) >= 2.074 \
Requires: perl(IO::Uncompress::Gunzip) >= 2.074 \
Requires: perl(IO::Uncompress::Inflate) >= 2.074 \
Requires: perl(IO::Uncompress::RawInflate) >= 2.074 \
Requires: perl(IO::Uncompress::Unzip) >= 2.074 \
Requires: perl(IO::Uncompress::Adapter::Bunzip2) >= 2.084 \
Requires: perl(IO::Uncompress::Adapter::Identity) >= 2.084 \
Requires: perl(IO::Uncompress::Adapter::Inflate) >= 2.084 \
Requires: perl(IO::Uncompress::Base) >= 2.084 \
Requires: perl(IO::Uncompress::Gunzip) >= 2.084 \
Requires: perl(IO::Uncompress::Inflate) >= 2.084 \
Requires: perl(IO::Uncompress::RawInflate) >= 2.084 \
Requires: perl(IO::Uncompress::Unzip) >= 2.084 \
Requires: perl(List::Util) \
Requires: perl(POSIX) \
Requires: perl(Scalar::Util) \
@ -744,34 +735,34 @@ Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(utf8) \
Requires: perl(warnings) \
Provides: perl(Compress::Zlib) = 2.074 \
Provides: perl(File::GlobMapper) = 1.000 \
Provides: perl(IO::Compress::Adapter::Bzip2) = 2.074 \
Provides: perl(IO::Compress::Adapter::Deflate) = 2.074 \
Provides: perl(IO::Compress::Adapter::Identity) = 2.074 \
Provides: perl(IO::Compress::Base) = 2.074 \
Provides: perl(IO::Compress::Base::Common) = 2.074 \
Provides: perl(IO::Compress::Bzip2) = 2.074 \
Provides: perl(IO::Compress::Deflate) = 2.074 \
Provides: perl(IO::Compress::Gzip) = 2.074 \
Provides: perl(IO::Compress::Gzip::Constants) = 2.074 \
Provides: perl(IO::Compress::RawDeflate) = 2.074 \
Provides: perl(IO::Compress::Zip) = 2.074 \
Provides: perl(IO::Compress::Zip::Constants) = 2.074 \
Provides: perl(IO::Compress::Zlib::Constants) = 2.074 \
Provides: perl(IO::Compress::Zlib::Extra) = 2.074 \
Provides: perl(IO::Uncompress::Adapter::Bunzip2) = 2.074 \
Provides: perl(IO::Uncompress::Adapter::Identity) = 2.074 \
Provides: perl(IO::Uncompress::Adapter::Inflate) = 2.074 \
Provides: perl(IO::Uncompress::AnyInflate) = 2.074 \
Provides: perl(IO::Uncompress::AnyUncompress) = 2.074 \
Provides: perl(IO::Uncompress::Base) = 2.074 \
Provides: perl(Compress::Zlib) = 2.084 \
Provides: perl(File::GlobMapper) = 1.001 \
Provides: perl(IO::Compress::Adapter::Bzip2) = 2.084 \
Provides: perl(IO::Compress::Adapter::Deflate) = 2.084 \
Provides: perl(IO::Compress::Adapter::Identity) = 2.084 \
Provides: perl(IO::Compress::Base) = 2.084 \
Provides: perl(IO::Compress::Base::Common) = 2.084 \
Provides: perl(IO::Compress::Bzip2) = 2.084 \
Provides: perl(IO::Compress::Deflate) = 2.084 \
Provides: perl(IO::Compress::Gzip) = 2.084 \
Provides: perl(IO::Compress::Gzip::Constants) = 2.084 \
Provides: perl(IO::Compress::RawDeflate) = 2.084 \
Provides: perl(IO::Compress::Zip) = 2.084 \
Provides: perl(IO::Compress::Zip::Constants) = 2.084 \
Provides: perl(IO::Compress::Zlib::Constants) = 2.084 \
Provides: perl(IO::Compress::Zlib::Extra) = 2.084 \
Provides: perl(IO::Uncompress::Adapter::Bunzip2) = 2.084 \
Provides: perl(IO::Uncompress::Adapter::Identity) = 2.084 \
Provides: perl(IO::Uncompress::Adapter::Inflate) = 2.084 \
Provides: perl(IO::Uncompress::AnyInflate) = 2.084 \
Provides: perl(IO::Uncompress::AnyUncompress) = 2.084 \
Provides: perl(IO::Uncompress::Base) = 2.084 \
Provides: perl(IO::Uncompress::Bunzip2) \
Provides: perl(IO::Uncompress::Bunzip2) = 2.074 \
Provides: perl(IO::Uncompress::Gunzip) = 2.074 \
Provides: perl(IO::Uncompress::Inflate) = 2.074 \
Provides: perl(IO::Uncompress::RawInflate) = 2.074 \
Provides: perl(IO::Uncompress::Unzip) = 2.074 \
Provides: perl(IO::Uncompress::Bunzip2) = 2.084 \
Provides: perl(IO::Uncompress::Gunzip) = 2.084 \
Provides: perl(IO::Uncompress::Inflate) = 2.084 \
Provides: perl(IO::Uncompress::RawInflate) = 2.084 \
Provides: perl(IO::Uncompress::Unzip) = 2.084 \
Provides: perl(U64) \
Provides: perl(Zlib::OldDeflate) \
Provides: perl(Zlib::OldInflate) \
@ -813,7 +804,7 @@ Requires: perl(Text::ParseWords) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(IPC::Cmd) = 1.00 \
Provides: perl(IPC::Cmd) = 1.02 \
%{nil}
%global gendep_perl_IPC_SysV \
Requires: perl(Carp) \
@ -844,37 +835,10 @@ Requires: perl(bytes) \
Requires: perl(constant) \
Requires: perl(overload) \
Requires: perl(strict) \
Provides: perl(JSON::PP) = 2.97001 \
Provides: perl(JSON::PP::Boolean) = 2.97001 \
Provides: perl(JSON::PP) = 4.02 \
Provides: perl(JSON::PP::Boolean) = 4.02 \
Provides: perl(JSON::PP::IncrParser) = 1.01 \
%{nil}
%global gendep_perl_Locale_Codes \
Requires: perl(:VERSION) >= 5.2.0 \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
Requires: perl(Exporter) \
Requires: perl(Locale::Codes) \
Requires: perl(Locale::Codes::Constants) \
Requires: perl(constant) \
Requires: perl(if) \
Requires: perl(strict) \
Requires: perl(utf8) \
Requires: perl(warnings) \
Provides: perl(Locale::Codes) = 3.25 \
Provides: perl(Locale::Codes) = 3.56 \
Provides: perl(Locale::Codes::Constants) = 3.56 \
Provides: perl(Locale::Codes::Country) = 3.56 \
Provides: perl(Locale::Codes::Currency) = 3.56 \
Provides: perl(Locale::Codes::LangExt) = 3.56 \
Provides: perl(Locale::Codes::LangFam) = 3.56 \
Provides: perl(Locale::Codes::LangVar) = 3.56 \
Provides: perl(Locale::Codes::Language) = 3.56 \
Provides: perl(Locale::Codes::Script) = 3.56 \
Provides: perl(Locale::Country) = 3.56 \
Provides: perl(Locale::Currency) = 3.56 \
Provides: perl(Locale::Language) = 3.56 \
Provides: perl(Locale::Script) = 3.56 \
%{nil}
%global gendep_perl_Locale_Maketext \
Requires: perl(Carp) \
Requires: perl(I18N::LangTags) \
@ -915,11 +879,10 @@ Requires: perl(integer) \
Requires: perl(overload) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Math::BigFloat) = 1.999811 \
Provides: perl(Math::BigInt) = 1.999811 \
Provides: perl(Math::BigInt::Calc) = 1.999811 \
Provides: perl(Math::BigInt::CalcEmu) = 1.999811 \
Provides: perl(Math::BigInt::Lib) = 1.999811 \
Provides: perl(Math::BigFloat) = 1.999816 \
Provides: perl(Math::BigInt) = 1.999816 \
Provides: perl(Math::BigInt::Calc) = 1.999816 \
Provides: perl(Math::BigInt::Lib) = 1.999816 \
%{nil}
%global gendep_perl_Math_BigInt_FastCalc \
Requires: perl(:VERSION) >= 5.6.0 \
@ -927,7 +890,7 @@ Requires: perl(Math::BigInt::Calc) >= 1.999801 \
Requires: perl(XSLoader) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Math::BigInt::FastCalc) = 0.5006 \
Provides: perl(Math::BigInt::FastCalc) = 0.5008 \
%{nil}
%global gendep_perl_Math_BigInt_FastCalc_debuginfo \
%{nil}
@ -938,7 +901,7 @@ Requires: perl(Math::BigFloat) >= 1.999718 \
Requires: perl(overload) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Math::BigRat) = 0.2613 \
Provides: perl(Math::BigRat) = 0.2614 \
%{nil}
%global gendep_perl_Math_Complex \
Requires: perl(Config) \
@ -974,8 +937,8 @@ Requires: perl(Module::CoreList) \
Requires: perl(strict) \
Requires: perl(version) \
Requires: perl(warnings) \
Provides: perl(Module::CoreList) = 5.20180622 \
Provides: perl(Module::CoreList::Utils) = 5.20180622 \
Provides: perl(Module::CoreList) = 5.20190522 \
Provides: perl(Module::CoreList::Utils) = 5.20190522 \
%{nil}
%global gendep_perl_Module_CoreList_tools \
Requires: perl(Getopt::Long) \
@ -989,7 +952,7 @@ Requires: perl(warnings) \
Requires: perl(File::Spec) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Module::Load) = 0.32 \
Provides: perl(Module::Load) = 0.34 \
%{nil}
%global gendep_perl_Module_Load_Conditional \
Requires: perl(Carp) \
@ -1019,7 +982,7 @@ Requires: perl(File::Spec) \
Requires: perl(strict) \
Requires: perl(version) >= 0.87 \
Requires: perl(warnings) \
Provides: perl(Module::Metadata) = 1.000033 \
Provides: perl(Module::Metadata) = 1.000036 \
%{nil}
%global gendep_perl_Net_Ping \
Requires: perl(:VERSION) >= 5.2.0 \
@ -1032,7 +995,7 @@ Requires: perl(Socket) \
Requires: perl(Time::HiRes) \
Requires: perl(constant) \
Requires: perl(strict) \
Provides: perl(Net::Ping) = 2.62 \
Provides: perl(Net::Ping) = 2.71 \
%{nil}
%global gendep_perl_Params_Check \
Requires: perl(Carp) \
@ -1049,16 +1012,16 @@ Requires: perl(File::Spec) \
Requires: perl(File::Spec::Unix) \
Requires: perl(constant) \
Requires: perl(strict) \
Provides: perl(Cwd) = 3.74 \
Provides: perl(File::Spec) = 3.74 \
Provides: perl(File::Spec::AmigaOS) = 3.74 \
Provides: perl(File::Spec::Cygwin) = 3.74 \
Provides: perl(File::Spec::Epoc) = 3.74 \
Provides: perl(File::Spec::Functions) = 3.74 \
Provides: perl(File::Spec::Mac) = 3.74 \
Provides: perl(File::Spec::OS2) = 3.74 \
Provides: perl(File::Spec::Unix) = 3.74 \
Provides: perl(File::Spec::Win32) = 3.74 \
Provides: perl(Cwd) = 3.78 \
Provides: perl(File::Spec) = 3.78 \
Provides: perl(File::Spec::AmigaOS) = 3.78 \
Provides: perl(File::Spec::Cygwin) = 3.78 \
Provides: perl(File::Spec::Epoc) = 3.78 \
Provides: perl(File::Spec::Functions) = 3.78 \
Provides: perl(File::Spec::Mac) = 3.78 \
Provides: perl(File::Spec::OS2) = 3.78 \
Provides: perl(File::Spec::Unix) = 3.78 \
Provides: perl(File::Spec::Win32) = 3.78 \
%{nil}
%global gendep_perl_PathTools_debuginfo \
%{nil}
@ -1280,9 +1243,10 @@ Provides: perl(Socket) = 2.027 \
%global gendep_perl_Socket_debuginfo \
%{nil}
%global gendep_perl_Storable \
Requires: perl(Carp) \
Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Provides: perl(Storable) = 3.08 \
Provides: perl(Storable) = 3.15 \
%{nil}
%global gendep_perl_Storable_debuginfo \
%{nil}
@ -1490,72 +1454,73 @@ Requires: perl(base) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Test2) = 1.302133 \
Provides: perl(Test2::API) = 1.302133 \
Provides: perl(Test2::API::Breakage) = 1.302133 \
Provides: perl(Test2::API::Context) = 1.302133 \
Provides: perl(Test2::API::Instance) = 1.302133 \
Provides: perl(Test2::API::Stack) = 1.302133 \
Provides: perl(Test2::Event) = 1.302133 \
Provides: perl(Test2::Event::Bail) = 1.302133 \
Provides: perl(Test2::Event::Diag) = 1.302133 \
Provides: perl(Test2::Event::Encoding) = 1.302133 \
Provides: perl(Test2::Event::Exception) = 1.302133 \
Provides: perl(Test2::Event::Fail) = 1.302133 \
Provides: perl(Test2::Event::Generic) = 1.302133 \
Provides: perl(Test2::Event::Note) = 1.302133 \
Provides: perl(Test2::Event::Ok) = 1.302133 \
Provides: perl(Test2::Event::Pass) = 1.302133 \
Provides: perl(Test2::Event::Plan) = 1.302133 \
Provides: perl(Test2::Event::Skip) = 1.302133 \
Provides: perl(Test2::Event::Subtest) = 1.302133 \
Provides: perl(Test2::Event::TAP::Version) = 1.302133 \
Provides: perl(Test2::Event::V2) = 1.302133 \
Provides: perl(Test2::Event::Waiting) = 1.302133 \
Provides: perl(Test2::EventFacet) = 1.302133 \
Provides: perl(Test2::EventFacet::About) = 1.302133 \
Provides: perl(Test2::EventFacet::Amnesty) = 1.302133 \
Provides: perl(Test2::EventFacet::Assert) = 1.302133 \
Provides: perl(Test2::EventFacet::Control) = 1.302133 \
Provides: perl(Test2::EventFacet::Error) = 1.302133 \
Provides: perl(Test2::EventFacet::Hub) = 1.302133 \
Provides: perl(Test2::EventFacet::Info) = 1.302133 \
Provides: perl(Test2::EventFacet::Meta) = 1.302133 \
Provides: perl(Test2::EventFacet::Parent) = 1.302133 \
Provides: perl(Test2::EventFacet::Plan) = 1.302133 \
Provides: perl(Test2::EventFacet::Render) = 1.302133 \
Provides: perl(Test2::EventFacet::Trace) = 1.302133 \
Provides: perl(Test2::Formatter) = 1.302133 \
Provides: perl(Test2::Formatter::TAP) = 1.302133 \
Provides: perl(Test2::Hub) = 1.302133 \
Provides: perl(Test2::Hub::Interceptor) = 1.302133 \
Provides: perl(Test2::Hub::Interceptor::Terminator) = 1.302133 \
Provides: perl(Test2::Hub::Subtest) = 1.302133 \
Provides: perl(Test2::IPC) = 1.302133 \
Provides: perl(Test2::IPC::Driver) = 1.302133 \
Provides: perl(Test2::IPC::Driver::Files) = 1.302133 \
Provides: perl(Test2::Tools::Tiny) = 1.302133 \
Provides: perl(Test2::Util) = 1.302133 \
Provides: perl(Test2::Util::ExternalMeta) = 1.302133 \
Provides: perl(Test2::Util::Facets2Legacy) = 1.302133 \
Provides: perl(Test2::Util::HashBase) = 1.302133 \
Provides: perl(Test2::Util::Trace) = 1.302133 \
Provides: perl(Test::Builder) = 1.302133 \
Provides: perl(Test::Builder::Formatter) = 1.302133 \
Provides: perl(Test2) = 1.302162 \
Provides: perl(Test2::API) = 1.302162 \
Provides: perl(Test2::API::Breakage) = 1.302162 \
Provides: perl(Test2::API::Context) = 1.302162 \
Provides: perl(Test2::API::Instance) = 1.302162 \
Provides: perl(Test2::API::Stack) = 1.302162 \
Provides: perl(Test2::Event) = 1.302162 \
Provides: perl(Test2::Event::Bail) = 1.302162 \
Provides: perl(Test2::Event::Diag) = 1.302162 \
Provides: perl(Test2::Event::Encoding) = 1.302162 \
Provides: perl(Test2::Event::Exception) = 1.302162 \
Provides: perl(Test2::Event::Fail) = 1.302162 \
Provides: perl(Test2::Event::Generic) = 1.302162 \
Provides: perl(Test2::Event::Note) = 1.302162 \
Provides: perl(Test2::Event::Ok) = 1.302162 \
Provides: perl(Test2::Event::Pass) = 1.302162 \
Provides: perl(Test2::Event::Plan) = 1.302162 \
Provides: perl(Test2::Event::Skip) = 1.302162 \
Provides: perl(Test2::Event::Subtest) = 1.302162 \
Provides: perl(Test2::Event::TAP::Version) = 1.302162 \
Provides: perl(Test2::Event::V2) = 1.302162 \
Provides: perl(Test2::Event::Waiting) = 1.302162 \
Provides: perl(Test2::EventFacet) = 1.302162 \
Provides: perl(Test2::EventFacet::About) = 1.302162 \
Provides: perl(Test2::EventFacet::Amnesty) = 1.302162 \
Provides: perl(Test2::EventFacet::Assert) = 1.302162 \
Provides: perl(Test2::EventFacet::Control) = 1.302162 \
Provides: perl(Test2::EventFacet::Error) = 1.302162 \
Provides: perl(Test2::EventFacet::Hub) = 1.302162 \
Provides: perl(Test2::EventFacet::Info) = 1.302162 \
Provides: perl(Test2::EventFacet::Info::Table) \
Provides: perl(Test2::EventFacet::Meta) = 1.302162 \
Provides: perl(Test2::EventFacet::Parent) = 1.302162 \
Provides: perl(Test2::EventFacet::Plan) = 1.302162 \
Provides: perl(Test2::EventFacet::Render) = 1.302162 \
Provides: perl(Test2::EventFacet::Trace) = 1.302162 \
Provides: perl(Test2::Formatter) = 1.302162 \
Provides: perl(Test2::Formatter::TAP) = 1.302162 \
Provides: perl(Test2::Hub) = 1.302162 \
Provides: perl(Test2::Hub::Interceptor) = 1.302162 \
Provides: perl(Test2::Hub::Interceptor::Terminator) = 1.302162 \
Provides: perl(Test2::Hub::Subtest) = 1.302162 \
Provides: perl(Test2::IPC) = 1.302162 \
Provides: perl(Test2::IPC::Driver) = 1.302162 \
Provides: perl(Test2::IPC::Driver::Files) = 1.302162 \
Provides: perl(Test2::Tools::Tiny) = 1.302162 \
Provides: perl(Test2::Util) = 1.302162 \
Provides: perl(Test2::Util::ExternalMeta) = 1.302162 \
Provides: perl(Test2::Util::Facets2Legacy) = 1.302162 \
Provides: perl(Test2::Util::HashBase) = 1.302162 \
Provides: perl(Test2::Util::Trace) = 1.302162 \
Provides: perl(Test::Builder) = 1.302162 \
Provides: perl(Test::Builder::Formatter) = 1.302162 \
Provides: perl(Test::Builder::IO::Scalar) = 2.114 \
Provides: perl(Test::Builder::Module) = 1.302133 \
Provides: perl(Test::Builder::Tester) = 1.302133 \
Provides: perl(Test::Builder::Tester::Color) = 1.302133 \
Provides: perl(Test::Builder::Module) = 1.302162 \
Provides: perl(Test::Builder::Tester) = 1.302162 \
Provides: perl(Test::Builder::Tester::Color) = 1.302162 \
Provides: perl(Test::Builder::Tester::Tie) \
Provides: perl(Test::Builder::TodoDiag) = 1.302133 \
Provides: perl(Test::More) = 1.302133 \
Provides: perl(Test::Simple) = 1.302133 \
Provides: perl(Test::Tester) = 1.302133 \
Provides: perl(Test::Tester::Capture) = 1.302133 \
Provides: perl(Test::Tester::CaptureRunner) = 1.302133 \
Provides: perl(Test::Tester::Delegate) = 1.302133 \
Provides: perl(Test::use::ok) = 1.302133 \
Provides: perl(ok) = 1.302133 \
Provides: perl(Test::Builder::TodoDiag) = 1.302162 \
Provides: perl(Test::More) = 1.302162 \
Provides: perl(Test::Simple) = 1.302162 \
Provides: perl(Test::Tester) = 1.302162 \
Provides: perl(Test::Tester::Capture) = 1.302162 \
Provides: perl(Test::Tester::CaptureRunner) = 1.302162 \
Provides: perl(Test::Tester::Delegate) = 1.302162 \
Provides: perl(Test::use::ok) = 1.302162 \
Provides: perl(ok) = 1.302162 \
%{nil}
%global gendep_perl_Text_Balanced \
Requires: perl(:VERSION) >= 5.5.0 \
@ -1591,13 +1556,13 @@ Requires: perl(Scalar::Util) >= 1.10 \
Requires: perl(strict) \
Requires: perl(threads::shared) >= 1.21 \
Requires: perl(warnings) \
Provides: perl(Thread::Queue) = 3.12 \
Provides: perl(Thread::Queue) = 3.13 \
%{nil}
%global gendep_perl_Time_HiRes \
Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Requires: perl(strict) \
Provides: perl(Time::HiRes) = 1.9759 \
Provides: perl(Time::HiRes) = 1.9760 \
%{nil}
%global gendep_perl_Time_HiRes_debuginfo \
%{nil}
@ -1607,7 +1572,7 @@ Requires: perl(Exporter) \
Requires: perl(constant) \
Requires: perl(parent) \
Requires: perl(strict) \
Provides: perl(Time::Local) = 1.25 \
Provides: perl(Time::Local) = 1.28 \
%{nil}
%global gendep_perl_Time_Piece \
Requires: perl(Carp) \
@ -1635,15 +1600,15 @@ Requires: perl(base) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Unicode::Collate) = 1.25 \
Provides: perl(Unicode::Collate::CJK::Big5) = 1.25 \
Provides: perl(Unicode::Collate::CJK::GB2312) = 1.25 \
Provides: perl(Unicode::Collate::CJK::JISX0208) = 1.25 \
Provides: perl(Unicode::Collate::CJK::Korean) = 1.25 \
Provides: perl(Unicode::Collate::CJK::Pinyin) = 1.25 \
Provides: perl(Unicode::Collate::CJK::Stroke) = 1.25 \
Provides: perl(Unicode::Collate::CJK::Zhuyin) = 1.25 \
Provides: perl(Unicode::Collate::Locale) = 1.25 \
Provides: perl(Unicode::Collate) = 1.27 \
Provides: perl(Unicode::Collate::CJK::Big5) = 1.27 \
Provides: perl(Unicode::Collate::CJK::GB2312) = 1.27 \
Provides: perl(Unicode::Collate::CJK::JISX0208) = 1.27 \
Provides: perl(Unicode::Collate::CJK::Korean) = 1.27 \
Provides: perl(Unicode::Collate::CJK::Pinyin) = 1.27 \
Provides: perl(Unicode::Collate::CJK::Stroke) = 1.27 \
Provides: perl(Unicode::Collate::CJK::Zhuyin) = 1.27 \
Provides: perl(Unicode::Collate::Locale) = 1.27 \
%{nil}
%global gendep_perl_Unicode_Collate_debuginfo \
%{nil}
@ -1696,11 +1661,11 @@ Requires: perl(constant) \
Requires: perl(overload) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Math::BigFloat::Trace) = 0.49 \
Provides: perl(Math::BigInt::Trace) = 0.49 \
Provides: perl(bigint) = 0.49 \
Provides: perl(bignum) = 0.49 \
Provides: perl(bigrat) = 0.49 \
Provides: perl(Math::BigFloat::Trace) = 0.51 \
Provides: perl(Math::BigInt::Trace) = 0.51 \
Provides: perl(bigint) = 0.51 \
Provides: perl(bignum) = 0.51 \
Provides: perl(bigrat) = 0.51 \
%{nil}
%global gendep_perl_constant \
Requires: perl(:VERSION) >= 5.8.0 \
@ -1738,12 +1703,11 @@ Requires: perl(Carp) \
Requires: perl(strict) \
Requires: perl(version) \
Requires: perl(warnings) \
Provides: perl(experimental) = 0.019 \
Provides: perl(experimental) = 0.020 \
%{nil}
%global gendep_perl_interpreter \
Requires: perl(:VERSION) >= 5.0.0 \
Requires: perl(:VERSION) >= 5.10.1 \
Requires: perl(:VERSION) >= 5.24.0 \
Requires: perl(:VERSION) >= 5.3.0 \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(:VERSION) >= 5.6.0 \
@ -1806,19 +1770,19 @@ Requires: perl(warnings::register) \
Provides: perl(AnyDBM_File) = 1.01 \
Provides: perl(AutoLoader) = 5.74 \
Provides: perl(AutoSplit) = 1.06 \
Provides: perl(B) = 1.74 \
Provides: perl(B::Concise) = 1.003 \
Provides: perl(B::Deparse) = 1.48 \
Provides: perl(B) = 1.76 \
Provides: perl(B::Concise) = 1.004 \
Provides: perl(B::Deparse) = 1.49 \
Provides: perl(B::OBJECT) \
Provides: perl(B::Op_private) = 5.028001 \
Provides: perl(B::Op_private) = 5.030000 \
Provides: perl(B::Showlex) = 1.05 \
Provides: perl(B::Terse) = 1.08 \
Provides: perl(B::Terse) = 1.09 \
Provides: perl(B::Xref) = 1.07 \
Provides: perl(Benchmark) = 1.22 \
Provides: perl(Class::Struct) = 0.65 \
Provides: perl(Class::Struct::Tie_ISA) \
Provides: perl(Config) = 5.028001 \
Provides: perl(Config::Extensions) = 0.02 \
Provides: perl(Config) = 5.030000 \
Provides: perl(Config::Extensions) = 0.03 \
Provides: perl(DB) = 1.08 \
Provides: perl(DBM_Filter) = 0.06 \
Provides: perl(DBM_Filter::compress) = 0.03 \
@ -1839,15 +1803,15 @@ Provides: perl(ExtUtils::Constant::XS) = 0.03 \
Provides: perl(Fcntl) = 1.13 \
Provides: perl(File::Basename) = 2.85 \
Provides: perl(File::Compare) = 1.1006 \
Provides: perl(File::Copy) = 2.33 \
Provides: perl(File::Copy) = 2.34 \
Provides: perl(File::DosGlob) = 1.12 \
Provides: perl(File::Find) = 1.34 \
Provides: perl(File::Glob) = 1.31 \
Provides: perl(File::Find) = 1.36 \
Provides: perl(File::Glob) = 1.32 \
Provides: perl(File::stat) = 1.08 \
Provides: perl(FileCache) = 1.10 \
Provides: perl(FileHandle) = 2.03 \
Provides: perl(FindBin) = 1.51 \
Provides: perl(GDBM_File) = 1.17 \
Provides: perl(GDBM_File) = 1.18 \
Provides: perl(Getopt::Std) = 1.12 \
Provides: perl(Hash::Util) = 0.22 \
Provides: perl(Hash::Util::FieldHash) = 1.20 \
@ -1855,10 +1819,10 @@ Provides: perl(I18N::Collate) = 1.02 \
Provides: perl(I18N::LangTags) = 0.43 \
Provides: perl(I18N::LangTags::Detect) = 1.07 \
Provides: perl(I18N::LangTags::List) = 0.40 \
Provides: perl(I18N::Langinfo) = 0.17 \
Provides: perl(I18N::Langinfo) = 0.18 \
Provides: perl(IPC::Open2) = 1.04 \
Provides: perl(IPC::Open3) = 1.20 \
Provides: perl(NDBM_File) = 1.14 \
Provides: perl(NDBM_File) = 1.15 \
Provides: perl(NEXT) = 0.67 \
Provides: perl(NEXT::ACTUAL) \
Provides: perl(NEXT::ACTUAL::DISTINCT) \
@ -1872,19 +1836,19 @@ Provides: perl(Net::netent) = 1.01 \
Provides: perl(Net::protoent) = 1.01 \
Provides: perl(Net::servent) = 1.02 \
Provides: perl(O) = 1.03 \
Provides: perl(ODBM_File) = 1.15 \
Provides: perl(ODBM_File) = 1.16 \
Provides: perl(Opcode) = 1.43 \
Provides: perl(POSIX) = 1.84 \
Provides: perl(POSIX) = 1.88 \
Provides: perl(POSIX::SigAction) \
Provides: perl(POSIX::SigRt) \
Provides: perl(POSIX::SigSet) \
Provides: perl(PerlIO) = 1.10 \
Provides: perl(PerlIO::encoding) = 0.26 \
Provides: perl(PerlIO::encoding) = 0.27 \
Provides: perl(PerlIO::mmap) = 0.016 \
Provides: perl(PerlIO::scalar) = 0.29 \
Provides: perl(PerlIO::scalar) = 0.30 \
Provides: perl(PerlIO::via) = 0.17 \
Provides: perl(Pod::Functions) = 1.13 \
Provides: perl(SDBM_File) = 1.14 \
Provides: perl(SDBM_File) = 1.15 \
Provides: perl(Safe) = 2.40 \
Provides: perl(Search::Dict) = 1.07 \
Provides: perl(SelectSaver) = 1.02 \
@ -1920,28 +1884,27 @@ Provides: perl(Time::gmtime) = 1.04 \
Provides: perl(Time::localtime) = 1.03 \
Provides: perl(Time::tm) = 1.00 \
Provides: perl(UNIVERSAL) = 1.13 \
Provides: perl(Unicode::UCD) = 0.70 \
Provides: perl(User::grent) = 1.02 \
Provides: perl(Unicode::UCD) = 0.72 \
Provides: perl(User::grent) = 1.03 \
Provides: perl(User::pwent) = 1.01 \
Provides: perl(_charnames) = 1.45 \
Provides: perl(arybase) = 0.15 \
Provides: perl(attributes) = 0.33 \
Provides: perl(autouse) = 1.11 \
Provides: perl(base) = 2.27 \
Provides: perl(blib) = 1.07 \
Provides: perl(bytes) = 1.06 \
Provides: perl(bytes) = 1.07 \
Provides: perl(bytes_heavy.pl) \
Provides: perl(charnames) = 1.45 \
Provides: perl(deprecate) = 0.03 \
Provides: perl(deprecate) = 0.04 \
Provides: perl(diagnostics) = 1.36 \
Provides: perl(dumpvar.pl) \
Provides: perl(encoding::warnings) = 0.13 \
Provides: perl(feature) = 1.52 \
Provides: perl(feature) = 1.54 \
Provides: perl(fields) = 2.24 \
Provides: perl(filetest) = 1.03 \
Provides: perl(if) = 0.0608 \
Provides: perl(less) = 0.03 \
Provides: perl(lib) = 0.64 \
Provides: perl(lib) = 0.65 \
Provides: perl(locale) = 1.09 \
Provides: perl(mro) = 1.22 \
Provides: perl(ops) = 1.02 \
@ -1949,10 +1912,10 @@ Provides: perl(overload) = 1.30 \
Provides: perl(overload::numbers) \
Provides: perl(overloading) = 0.02 \
Provides: perl(perl5db.pl) \
Provides: perl(sigtrap) = 1.08 \
Provides: perl(sigtrap) = 1.09 \
Provides: perl(sort) = 2.04 \
Provides: perl(subs) = 1.03 \
Provides: perl(vars) = 1.04 \
Provides: perl(vars) = 1.05 \
Provides: perl(vmsish) = 1.04 \
Provides: perl(warnings::register) = 1.04 \
%{nil}
@ -2008,9 +1971,8 @@ Requires: perl(vars) \
Requires: perl(integer) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(:MODULE_COMPAT_5.28.0) \
Provides: perl(:MODULE_COMPAT_5.28.1) \
Provides: perl(:VERSION) = 5.28.1 \
Provides: perl(:MODULE_COMPAT_5.30.0) \
Provides: perl(:VERSION) = 5.30.0 \
Provides: perl(:WITH_64BIT) \
Provides: perl(:WITH_ITHREADS) \
Provides: perl(:WITH_LARGEFILES) \
@ -2018,12 +1980,12 @@ Provides: perl(:WITH_PERLIO) \
Provides: perl(:WITH_THREADS) \
Provides: perl(XSLoader) = 0.30 \
Provides: perl(integer) = 1.01 \
Provides: perl(re) = 0.36 \
Provides: perl(re) = 0.37 \
Provides: perl(strict) = 1.11 \
Provides: perl(unicore::Name) \
Provides: perl(utf8) = 1.21 \
Provides: perl(utf8) = 1.22 \
Provides: perl(utf8_heavy.pl) \
Provides: perl(warnings) = 1.42 \
Provides: perl(warnings) = 1.44 \
%{nil}
%global gendep_perl_libs_debuginfo \
%{nil}
@ -2036,13 +1998,12 @@ Provides: perl(open) = 1.11 \
%{nil}
%global gendep_perl_parent \
Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(parent) = 0.236 \
Provides: perl(parent) = 0.237 \
%{nil}
%global gendep_perl_perlfaq \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(perlfaq) = 5.021011 \
Provides: perl(perlfaq) = 5.20190126 \
%{nil}
%global gendep_perl_podlators \
Requires: perl(:VERSION) >= 5.6.0 \
@ -2061,12 +2022,12 @@ Requires: perl(strict) \
Requires: perl(subs) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Pod::Man) = 4.10 \
Provides: perl(Pod::ParseLink) = 4.10 \
Provides: perl(Pod::Text) = 4.10 \
Provides: perl(Pod::Text::Color) = 4.10 \
Provides: perl(Pod::Text::Overstrike) = 4.10 \
Provides: perl(Pod::Text::Termcap) = 4.10 \
Provides: perl(Pod::Man) = 4.11 \
Provides: perl(Pod::ParseLink) = 4.11 \
Provides: perl(Pod::Text) = 4.11 \
Provides: perl(Pod::Text::Color) = 4.11 \
Provides: perl(Pod::Text::Overstrike) = 4.11 \
Provides: perl(Pod::Text::Termcap) = 4.11 \
%{nil}
%global gendep_perl_tests \
%{nil}
@ -2083,10 +2044,11 @@ Provides: perl(threads) = 2.22 \
%{nil}
%global gendep_perl_threads_shared \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(Config) \
Requires: perl(Scalar::Util) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(threads::shared) = 1.58 \
Provides: perl(threads::shared) = 1.60 \
%{nil}
%global gendep_perl_threads_shared_debuginfo \
%{nil}
@ -2109,6 +2071,6 @@ Requires: perl(:VERSION) >= 5.6.2 \
Requires: perl(strict) \
Requires: perl(version::regex) \
Requires: perl(warnings::register) \
Provides: perl(version) = 0.9923 \
Provides: perl(version::regex) = 0.9923 \
Provides: perl(version) = 0.9924 \
Provides: perl(version::regex) = 0.9924 \
%{nil}

View File

@ -1,12 +1,12 @@
diff -up perl-5.10.0/t/io/fs.t.BAD perl-5.10.0/t/io/fs.t
--- perl-5.10.0/t/io/fs.t.BAD 2008-01-30 13:36:43.000000000 -0500
+++ perl-5.10.0/t/io/fs.t 2008-01-30 13:41:27.000000000 -0500
@@ -258,7 +258,7 @@ isnt($atime, 500000000, 'atime');
isnt($mtime, 500000000 + $delta, 'mtime');
@@ -257,7 +257,7 @@ isnt($atime, 500000000, 'atime');
isnt($mtime, $ut + $delta, 'mtime: utime called with two undefs');
SKIP: {
- skip "no futimes", 6 unless ($Config{d_futimes} || "") eq "define";
+ skip "no futimes", 6;
note("check futimes");
open(my $fh, "<", 'b');
$foo = (utime 500000000,500000000 + $delta, $fh);
is($foo, 1, "futime");
$foo = (utime $ut,$ut + $delta, $fh);

View File

@ -1,30 +0,0 @@
From 862c89c81d26dae0dcef138e19df8b45615e69c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 2 Dec 2013 10:10:56 +0100
Subject: [PATCH] Document Math::BigInt::CalcEmu requires Math::BigInt
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
<https://rt.cpan.org/Public/Bug/Display.html?id=85015>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm b/dist/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
index c82e153..0c0b496 100644
--- a/cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
+++ b/cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
@@ -292,6 +292,7 @@ Math::BigInt::CalcEmu - Emulate low-level math with BigInt code
=head1 SYNOPSIS
+ use Math::BigInt;
use Math::BigInt::CalcEmu;
=head1 DESCRIPTION
--
1.8.3.1

View File

@ -1,61 +0,0 @@
From cb2fda94b02c5b7e8d16582410034f5a3dae526f Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 25 Jul 2017 16:21:22 +1000
Subject: [PATCH] (perl #131588) be a little more careful in arybase::_tie_it()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Original patch by John Leitch <john@autosectools.com>
Petr Pisar: Ported to 5.26.0.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/arybase/arybase.xs | 10 ++++++----
ext/arybase/t/arybase.t | 4 +++-
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/ext/arybase/arybase.xs b/ext/arybase/arybase.xs
index 880bbe3..216442a 100644
--- a/ext/arybase/arybase.xs
+++ b/ext/arybase/arybase.xs
@@ -428,10 +428,12 @@ _tie_it(SV *sv)
INIT:
GV * const gv = (GV *)sv;
CODE:
- if (GvSV(gv))
- /* This is *our* scalar now! */
- sv_unmagic(GvSV(gv), PERL_MAGIC_sv);
- tie(aTHX_ GvSVn(gv), NULL, GvSTASH(CvGV(cv)));
+ if (isGV(gv)) {
+ if (GvSV(gv))
+ /* This is *our* scalar now! */
+ sv_unmagic(GvSV(gv), PERL_MAGIC_sv);
+ tie(aTHX_ GvSVn(gv), NULL, GvSTASH(CvGV(cv)));
+ }
void
FETCH(...)
diff --git a/ext/arybase/t/arybase.t b/ext/arybase/t/arybase.t
index f3d3287..41e90df 100644
--- a/ext/arybase/t/arybase.t
+++ b/ext/arybase/t/arybase.t
@@ -4,7 +4,7 @@
# plus miscellaneous bug fix tests
no warnings 'deprecated';
-use Test::More tests => 7;
+use Test::More tests => 8;
sub outside_base_scope { return "${'['}" }
@@ -34,4 +34,6 @@ is $@, "That use of \$[ is unsupported at $f line $l.\n",
sub foo { my $x; $x = wait } # compilation of this routine used to crash
+ok eval { arybase::_tie_it(1); 1 }, "don't crash on bad call to _tie_it()";
+
1;
--
2.9.4

View File

@ -1,138 +0,0 @@
From 37f30deca415d6c2606bf088e09f978134b9e2e1 Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Sun, 10 Mar 2019 19:40:42 +0200
Subject: [PATCH] Fix POSIX::mblen mbstate_t initialization on threaded perls
with glibc
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
As reported in https://bugs.launchpad.net/bugs/1818953 POSIX::mblen()
is broken on threaded perls with glibc.
% perl -MPOSIX=mblen -e 'mblen("a", 1)'
perl: mbrtowc.c:105: __mbrtowc: Assertion `__mbsinit (data.__statep)' failed.
zsh: abort (core dumped) perl -MPOSIX=mblen -e 'mblen("a", 1)'
This broke in v5.27.8-134-g6c9ff7e96e which made the function
use mbrlen(3) under the hood on threaded perls.
The problem is initialization of the shift state with
mbrlen(NULL, 0, &ps));
The glibc documentation for mbrlen(3) at
https://www.gnu.org/software/libc/manual/html_node/Converting-a-Character.html#Converting-a-Character
does not mention initialization by passing in a null pointer for the
string, only a pointer to a NUL wide character.
If the next multibyte character corresponds to the NUL wide character,
the return value is 0. If the next n bytes form a valid multibyte
character, the number of bytes belonging to this multibyte character
byte sequence is returned.
Use memset(3) instead for mbstate_t initialization, as suggested in
https://www.gnu.org/software/libc/manual/html_node/Keeping-the-state.html
with the hope that this is more portable.
While at it, add a few basic test cases. These are in a new file because
they need fresh_perl_is() from test.pl while the existing ones use
Test::More (and conversion of at least posix.t looks way too involved.)
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1818953
Petr Písař: Ported to 5.28.1 from
25d7b7aa379d33ce2e8fe3e2bef4206b35739bc5.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
MANIFEST | 1 +
ext/POSIX/POSIX.xs | 2 +-
ext/POSIX/t/mb.t | 47 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 49 insertions(+), 1 deletion(-)
create mode 100644 ext/POSIX/t/mb.t
diff --git a/MANIFEST b/MANIFEST
index 9fbbe9a..e4e63c3 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4204,6 +4204,7 @@ ext/POSIX/POSIX.xs POSIX extension external subroutines
ext/POSIX/t/export.t Test @EXPORT and @EXPORT_OK
ext/POSIX/t/iscrash See if POSIX isxxx() crashes with threads on Win32
ext/POSIX/t/math.t Basic math tests for POSIX
+ext/POSIX/t/mb.t Multibyte function tests for POSIX
ext/POSIX/t/posix.t See if POSIX works
ext/POSIX/t/sigaction.t See if POSIX::sigaction works
ext/POSIX/t/sigset.t See if POSIX::SigSet works
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 7497305..395025a 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -3318,7 +3318,7 @@ mblen(s, n)
#endif
CODE:
#if defined(USE_ITHREADS) && defined(HAS_MBRLEN)
- PERL_UNUSED_RESULT(mbrlen(NULL, 0, &ps)); /* Initialize state */
+ memset(&ps, 0, sizeof(ps)); /* Initialize state */
RETVAL = mbrlen(s, n, &ps); /* Prefer reentrant version */
#else
RETVAL = mblen(s, n);
diff --git a/ext/POSIX/t/mb.t b/ext/POSIX/t/mb.t
new file mode 100644
index 0000000..961edf6
--- /dev/null
+++ b/ext/POSIX/t/mb.t
@@ -0,0 +1,47 @@
+#!./perl
+
+# These tests are in a separate file, because they use fresh_perl_is()
+# from test.pl.
+
+# The mb* functions use the "underlying locale" that is not affected by
+# the Perl one. So we run the tests in a separate "fresh_perl" process
+# with the correct LC_CTYPE set in the environment.
+
+BEGIN {
+ require Config; import Config;
+ if ($^O ne 'VMS' and $Config{'extensions'} !~ /\bPOSIX\b/) {
+ print "1..0\n";
+ exit 0;
+ }
+ unshift @INC, "../../t";
+ require 'loc_tools.pl';
+ require 'test.pl';
+}
+
+plan tests => 3;
+
+use POSIX qw();
+
+SKIP: {
+ skip("mblen() not present", 3) unless $Config{d_mblen};
+
+ is(&POSIX::mblen("a", &POSIX::MB_CUR_MAX), 1, 'mblen() basically works');
+
+ skip("LC_CTYPE locale support not available", 2)
+ unless locales_enabled('LC_CTYPE');
+
+ my $utf8_locale = find_utf8_ctype_locale();
+ skip("no utf8 locale available", 2) unless $utf8_locale;
+
+ local $ENV{LC_CTYPE} = $utf8_locale;
+ local $ENV{LC_ALL};
+ delete $ENV{LC_ALL};
+
+ fresh_perl_is(
+ 'use POSIX; print &POSIX::mblen("\x{c3}\x{28}", &POSIX::MB_CUR_MAX)',
+ -1, {}, 'mblen() recognizes invalid multibyte characters');
+
+ fresh_perl_is(
+ 'use POSIX; print &POSIX::mblen("\N{GREEK SMALL LETTER SIGMA}", &POSIX::MB_CUR_MAX)',
+ 2, {}, 'mblen() works on UTF-8 characters');
+}
--
2.20.1

View File

@ -1,69 +0,0 @@
From d434dd3ec16dc1202626e9868f177203e2a86da5 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Thu, 21 Mar 2019 09:35:49 -0600
Subject: [PATCH] PATCH: [perl #133880] assertion failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This was caused by attempting to continue parsing after an error is
found, and later assuming that what came before was valid. The fix is
to put in something valid that's usable until the parse eventually dies
from what caused this, or some other error.
Signed-off-by: Ported to 5.28.1 from
ef65a74af186beb93566cf827c5f543f4aa14645.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/op/tr.t | 8 +++++++-
toke.c | 8 ++++++--
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/t/op/tr.t b/t/op/tr.t
index 0f74936..47d603d 100644
--- a/t/op/tr.t
+++ b/t/op/tr.t
@@ -13,7 +13,7 @@ BEGIN {
use utf8;
-plan tests => 300;
+plan tests => 301;
# Test this first before we extend the stack with other operations.
# This caused an asan failure due to a bad write past the end of the stack.
@@ -1137,6 +1137,12 @@ for ("", nullrocow) {
[\x{E5CD}-\x{E5DF}\x{EA80}-\x{EAFA}\x{EB0E}-\x{EB8E}\x{EAFB}-\x{EB0D}\x{E5B5}-\x{E5CC}];
is $x, "\x{E5CE}", '[perl #130656]';
+
+}
+
+{
+ fresh_perl_like('y/\x{a00}0-\N{}//', qr/Unknown charname/, { },
+ 'RT #133880 illegal \N{}');
}
1;
diff --git a/toke.c b/toke.c
index 3164df5..4747ef5 100644
--- a/toke.c
+++ b/toke.c
@@ -3770,8 +3770,12 @@ S_scan_const(pTHX_ char *start)
}
}
else /* Here is \N{NAME} but not \N{U+...}. */
- if ((res = get_and_check_backslash_N_name(s, e)))
- {
+ if (! (res = get_and_check_backslash_N_name(s, e)))
+ { /* Failed. We should die eventually, but for now use a NUL
+ to keep parsing */
+ *d++ = '\0';
+ }
+ else { /* Successfully evaluated the name */
STRLEN len;
const char *str = SvPV_const(res, len);
if (PL_lex_inpat) {
--
2.20.1

View File

@ -1,80 +0,0 @@
From 72cc38bc65d4a675d9134acb085d2e0c3dcd5383 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Fri, 14 Dec 2018 16:54:42 +0000
Subject: [PATCH] ext/GDBM_File/t/fatal.t: handle non-fatality
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This script is supposed to exercise the error handling callback
mechanism in gdbm, by triggering an error by surreptitiously closing
the file handle which gdbm has opened.
However, this doesn't trigger an error in newer releases of the gdbm
library, which uses mmap() rather than write() etc. In fact I can't see
any way of triggering an error: so just skip the relevant tests if we
can't trigger a failure.
Petr Písař: Ported to 5.28.1 from
upstream's d33f9fbdb3bb27a3b32a2ffa9aa035617c07f7a1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/GDBM_File/t/fatal.t | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t
index 0e426d4..6945653 100644
--- a/ext/GDBM_File/t/fatal.t
+++ b/ext/GDBM_File/t/fatal.t
@@ -1,4 +1,12 @@
#!./perl -w
+#
+# Exercise the error handling callback mechanism in gdbm.
+#
+# Try to trigger an error by surreptitiously closing the file handle which
+# gdbm has opened. Note that this won't trigger an error in newer
+# releases of the gdbm library, which uses mmap() rather than write() etc:
+# so skip in that case.
+
use strict;
use Test::More;
@@ -34,16 +42,25 @@ isnt((open $fh, "<&=$fileno"), undef, "dup fileno $fileno")
or diag("\$! = $!");
isnt(close $fh, undef,
"close fileno $fileno, out from underneath the GDBM_File");
-is(eval {
+
+# store some data to a closed file handle
+
+my $res = eval {
$h{Perl} = 'Rules';
untie %h;
- 1;
-}, undef, 'Trapped error when attempting to write to knobbled GDBM_File');
-
-# Observed "File write error" and "lseek error" from two different systems.
-# So there might be more variants. Important part was that we trapped the error
-# via croak.
-like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/,
- 'expected error message from GDBM_File');
+ 99;
+};
+
+SKIP: {
+ skip "Can't tigger failure", 2 if $res == 99;
+
+ is $res, undef, "eval should return undef";
+
+ # Observed "File write error" and "lseek error" from two different
+ # systems. So there might be more variants. Important part was that
+ # we trapped the error # via croak.
+ like($@, qr/ at .*\bfatal\.t line \d+\.\n\z/,
+ 'expected error message from GDBM_File');
+}
unlink <Op_dbmx*>;
--
2.17.2

View File

@ -1,53 +0,0 @@
From a83eb62d86a48741cbe2decf2bd99ef5292d1c02 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Mon, 25 Mar 2019 20:13:30 +0000
Subject: [PATCH] fix a leak with indented heredocs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
With something like
|print <<~EOF;
| some data
| EOF
it croaks (as it should) with "Indentation ... doesn't match delimiter",
but in that case it leaks the recently malloc()d 'indent' buffer.
The fix is simple. I've also fixed by code inspection where the code
does 'goto interminable', although I didn't try to reproduce the conditions
where the goto might occur.
Petr Písař: Ported to 5.28.1 from
e40cca748f05c81e1929ed625407afbe7c79d4dd/
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
toke.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/toke.c b/toke.c
index 4747ef5..240fd49 100644
--- a/toke.c
+++ b/toke.c
@@ -10365,6 +10365,7 @@ S_scan_heredoc(pTHX_ char *s)
/* Line doesn't begin with our indentation? Croak */
} else {
+ Safefree(indent);
Perl_croak(aTHX_
"Indentation on line %d of here-doc doesn't match delimiter",
(int)linecount
@@ -10388,6 +10389,8 @@ S_scan_heredoc(pTHX_ char *s)
return s;
interminable:
+ if (indent)
+ Safefree(indent);
SvREFCNT_dec(tmpstr);
CopLINE_set(PL_curcop, origline);
missingterm(PL_tokenbuf + 1, sizeof(PL_tokenbuf) - 1);
--
2.20.1

View File

@ -1,132 +0,0 @@
From 057b890a6d3201a44afd68c840f3a76d4f508d91 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Fri, 8 Mar 2019 08:40:29 +0000
Subject: [PATCH] fix leak when compiling typed hash deref
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In something like
my Foo $h;
$h->{bad_key}
perl will croak if package Foo defines valid %FIELDS and bad_key isn't
one of them. This croak happens during the second pass in
S_maybe_multideref(), which is trying to convert $h->{bad_key} into a
single multideref op. Since the aux buffer is allocated at the end of
the first pass, the buffer leaks.
The fix is to do the check in the first pass, which has been done by
adding an extra boolean flag to S_check_hash_fields_and_hekify(),
indicating whether to just check or actually do it.
Petr Písař: Ported to 5.18.1 from
02a9632ac4bf515585a2f25b05b2939de1743ded.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
op.c | 22 +++++++++++++++-------
t/op/multideref.t | 11 ++++++++++-
2 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/op.c b/op.c
index 67da715..af3c448 100644
--- a/op.c
+++ b/op.c
@@ -2416,12 +2416,13 @@ S_modkids(pTHX_ OP *o, I32 type)
/* for a helem/hslice/kvslice, if its a fixed hash, croak on invalid
* const fields. Also, convert CONST keys to HEK-in-SVs.
- * rop is the op that retrieves the hash;
+ * rop is the op that retrieves the hash;
* key_op is the first key
+ * real if false, only check (and possibly croak); don't update op
*/
STATIC void
-S_check_hash_fields_and_hekify(pTHX_ UNOP *rop, SVOP *key_op)
+S_check_hash_fields_and_hekify(pTHX_ UNOP *rop, SVOP *key_op, int real)
{
PADNAME *lexname;
GV **fields;
@@ -2471,7 +2472,8 @@ S_check_hash_fields_and_hekify(pTHX_ UNOP *rop, SVOP *key_op)
if ( !SvIsCOW_shared_hash(sv = *svp)
&& SvTYPE(sv) < SVt_PVMG
&& SvOK(sv)
- && !SvROK(sv))
+ && !SvROK(sv)
+ && real)
{
SSize_t keylen;
const char * const key = SvPV_const(sv, *(STRLEN*)&keylen);
@@ -3648,7 +3650,7 @@ S_finalize_op(pTHX_ OP* o)
check_keys:
if (o->op_private & OPpLVAL_INTRO || rop->op_type != OP_RV2HV)
rop = NULL;
- S_check_hash_fields_and_hekify(aTHX_ rop, key_op);
+ S_check_hash_fields_and_hekify(aTHX_ rop, key_op, 1);
break;
}
case OP_NULL:
@@ -14605,12 +14607,13 @@ S_maybe_multideref(pTHX_ OP *start, OP *orig_o, UV orig_action, U8 hints)
* the extra hassle for those edge cases */
break;
- if (pass) {
+ {
UNOP *rop = NULL;
OP * helem_op = o->op_next;
ASSUME( helem_op->op_type == OP_HELEM
- || helem_op->op_type == OP_NULL);
+ || helem_op->op_type == OP_NULL
+ || pass == 0);
if (helem_op->op_type == OP_HELEM) {
rop = (UNOP*)(((BINOP*)helem_op)->op_first);
if ( helem_op->op_private & OPpLVAL_INTRO
@@ -14618,9 +14621,14 @@ S_maybe_multideref(pTHX_ OP *start, OP *orig_o, UV orig_action, U8 hints)
)
rop = NULL;
}
- S_check_hash_fields_and_hekify(aTHX_ rop, cSVOPo);
+ /* on first pass just check; on second pass
+ * hekify */
+ S_check_hash_fields_and_hekify(aTHX_ rop, cSVOPo,
+ pass);
+ }
#ifdef USE_ITHREADS
+ if (pass) {
/* Relocate sv to the pad for thread safety */
op_relocate_sv(&cSVOPo->op_sv, &o->op_targ);
arg->pad_offset = o->op_targ;
diff --git a/t/op/multideref.t b/t/op/multideref.t
index 20ba1ca..12b0453 100644
--- a/t/op/multideref.t
+++ b/t/op/multideref.t
@@ -18,7 +18,7 @@ BEGIN {
use warnings;
use strict;
-plan 63;
+plan 64;
# check that strict refs hint is handled
@@ -233,3 +233,12 @@ sub defer {}
is $x[qw(rt131627)->$*], 11, 'RT #131627: $a[qw(var)->$*]';
}
+# this used to leak - run the code for ASan to spot any problems
+{
+ package Foo;
+ our %FIELDS = ();
+ my Foo $f;
+ eval q{ my $x = $f->{c}; };
+ ::pass("S_maybe_multideref() shouldn't leak on croak");
+}
+
--
2.20.1

View File

@ -1,52 +0,0 @@
From f5972f38fbf06ff7db2ba869d0a5a4bc8e4c1e70 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 2 Jan 2019 11:20:34 +1100
Subject: [PATCH] report line number for Prototype not terminated
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously COPLINE was updated (to the end of the file) before
reporting the error, which wasn't useful.
Petr Písař: Ported to 5.28.1 from upstream's
7122d783e33c1d4b9b5a037eef231fae4c2d76cd.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/lib/croak/toke | 6 ++++++
toke.c | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/t/lib/croak/toke b/t/lib/croak/toke
index 1d45a3f..5ec90b9 100644
--- a/t/lib/croak/toke
+++ b/t/lib/croak/toke
@@ -489,3 +489,9 @@ =cut
EXPECT
syntax error at - line 4, next token ???
Execution of - aborted due to compilation errors.
+########
+# NAME check Prototype not terminated includes line number (133524)
+sub t1 {}
+sub t2 (}
+EXPECT
+Prototype not terminated at - line 2.
diff --git a/toke.c b/toke.c
index fc87252..4d81810 100644
--- a/toke.c
+++ b/toke.c
@@ -8741,9 +8741,9 @@ Perl_yylex(pTHX)
/* Look for a prototype */
if (*s == '(' && !is_sigsub) {
s = scan_str(s,FALSE,FALSE,FALSE,NULL);
- COPLINE_SET_FROM_MULTI_END;
if (!s)
Perl_croak(aTHX_ "Prototype not terminated");
+ COPLINE_SET_FROM_MULTI_END;
(void)validate_proto(PL_subname, PL_lex_stuff,
ckWARN(WARN_ILLEGALPROTO), 0);
have_proto = TRUE;
--
2.17.2

View File

@ -1,100 +0,0 @@
From e6ff24e70ac8055d866eab588c9dfa7dc60adc93 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Mon, 21 Jan 2019 11:41:03 +1100
Subject: [PATCH] (perl #133782) set magic when changing $^R
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The regexp engine sets and restores $^R in a few places, but didn't
mg_set() (SvSETMAGIC()) it at all.
Calls to length() on $^R, both within regexp code blocks and on
a successful match could add utf8 length magic to $^R, and modifying
$^R without mg_set() could leave now invalid length magic.
Petr Písař: Ported to 5.28.1 from upstream's
d4c456e337e653ae11876241727b563a684dffe7.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regexec.c | 17 +++++++++++++----
t/re/pat.t | 10 +++++++++-
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/regexec.c b/regexec.c
index 201d9aa..830a16a 100644
--- a/regexec.c
+++ b/regexec.c
@@ -7319,8 +7319,11 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
PL_op = NULL;
re_sv = NULL;
- if (logical == 0) /* (?{})/ */
- sv_setsv(save_scalar(PL_replgv), ret); /* $^R */
+ if (logical == 0) { /* (?{})/ */
+ SV *replsv = save_scalar(PL_replgv);
+ sv_setsv(replsv, ret); /* $^R */
+ SvSETMAGIC(replsv);
+ }
else if (logical == 1) { /* /(?(?{...})X|Y)/ */
sw = cBOOL(SvTRUE_NN(ret));
logical = 0;
@@ -7495,9 +7498,13 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
{
/* preserve $^R across LEAVE's. See Bug 121070. */
SV *save_sv= GvSV(PL_replgv);
+ SV *replsv;
SvREFCNT_inc(save_sv);
regcpblow(ST.cp); /* LEAVE in disguise */
- sv_setsv(GvSV(PL_replgv), save_sv);
+ /* don't move this initialization up */
+ replsv = GvSV(PL_replgv);
+ sv_setsv(replsv, save_sv);
+ SvSETMAGIC(replsv);
SvREFCNT_dec(save_sv);
}
cur_eval = ST.prev_eval;
@@ -9012,8 +9019,10 @@ NULL
* see code related to PL_replgv elsewhere in this file.
* Yves
*/
- if (oreplsv != GvSV(PL_replgv))
+ if (oreplsv != GvSV(PL_replgv)) {
sv_setsv(oreplsv, GvSV(PL_replgv));
+ SvSETMAGIC(oreplsv);
+ }
}
result = 1;
goto final_exit;
diff --git a/t/re/pat.t b/t/re/pat.t
index 1d98fe7..a96bf56 100644
--- a/t/re/pat.t
+++ b/t/re/pat.t
@@ -23,7 +23,7 @@ BEGIN {
skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader;
skip_all_without_unicode_tables();
-plan tests => 848; # Update this when adding/deleting tests.
+plan tests => 849; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -1947,6 +1947,14 @@ EOP
{ # [perl $132164]
fresh_perl_is('m m0*0+\Rm', "",{},"Undefined behavior in address sanitizer");
}
+ { # [perl #133782]
+ # this would panic on DEBUGGING builds
+ fresh_perl_is(<<'CODE', "ok\nok\n",{}, 'Bad length magic was left on $^R');
+while( "\N{U+100}bc" =~ /(..?)(?{$^N})/g ) {
+ print "ok\n" if length($^R)==length("$^R");
+}
+CODE
+ }
} # End of sub run_tests
--
2.20.1

View File

@ -1,79 +0,0 @@
From 4d980ef2cd6bf458706048a5627d02ea8ebf39b4 Mon Sep 17 00:00:00 2001
From: Hugo van der Sanden <hv@crypt.org>
Date: Mon, 25 Mar 2019 11:27:12 +0000
Subject: [PATCH] coredump in Perl_re_intuit_start
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Make sure we have a valid non-utf8 'other' check substring before we
try to use it.
Petr Písař: Ported to 5.28.1 from
fd8def15a58c97aa89cce8569befded97fd8c3b7.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regexec.c | 9 +++++++--
t/re/pat_rt_report.t | 11 ++++++++++-
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/regexec.c b/regexec.c
index 830a16a..357a109 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1277,8 +1277,8 @@ Perl_re_intuit_start(pTHX_
/* now look for the 'other' substring if defined */
- if (utf8_target ? prog->substrs->data[other_ix].utf8_substr
- : prog->substrs->data[other_ix].substr)
+ if (prog->substrs->data[other_ix].utf8_substr
+ || prog->substrs->data[other_ix].substr)
{
/* Take into account the "other" substring. */
char *last, *last1;
@@ -1288,6 +1288,11 @@ Perl_re_intuit_start(pTHX_
do_other_substr:
other = &prog->substrs->data[other_ix];
+ if (!utf8_target && !other->substr) {
+ if (!to_byte_substr(prog)) {
+ NON_UTF8_TARGET_BUT_UTF8_REQUIRED(fail);
+ }
+ }
/* if "other" is anchored:
* we've previously found a floating substr starting at check_at.
diff --git a/t/re/pat_rt_report.t b/t/re/pat_rt_report.t
index dd740e7..4dc2dec 100644
--- a/t/re/pat_rt_report.t
+++ b/t/re/pat_rt_report.t
@@ -20,7 +20,7 @@ use warnings;
use 5.010;
use Config;
-plan tests => 2504; # Update this when adding/deleting tests.
+plan tests => 2505; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -1141,6 +1141,15 @@ EOP
ok($s=~/(foo){1,0}|(?1)/,
"RT #130561 - allowing impossible quantifier should not break recursion");
}
+ {
+ # RT #133892 Coredump in Perl_re_intuit_start
+ # Second match flips to checking floating substring before fixed
+ # substring, which triggers a pathway that failed to check there
+ # was a non-utf8 version of the string before trying to use it
+ # resulting in a SEGV.
+ my $result = grep /b\x{1c0}ss0/i, qw{ xxxx xxxx0 };
+ ok($result == 0);
+ }
} # End of sub run_tests
--
2.20.1

View File

@ -1,56 +0,0 @@
From 17dd77cd74f0a69332c091f816162e34abff30c5 Mon Sep 17 00:00:00 2001
From: Francois Perrad <francois.perrad@gadz.org>
Date: Mon, 2 Jul 2018 00:17:44 +0200
Subject: [PATCH] locale.c: Fix conditional compilation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
With Perl 5.28.0, there are some mismatches between blocks
and conditional compilation in the Perl__is_cur_LC_category_utf8() function.
The compilation of miniperl could fails like this:
```
locale.c: In function `Perl__is_cur_LC_category_utf8`:
locale.c:5481:1: error: expected declaration or statement at end of input
}
^
```
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
locale.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/locale.c b/locale.c
index f8f77fb3d0..f2731846ad 100644
--- a/locale.c
+++ b/locale.c
@@ -4649,11 +4649,12 @@ Perl__is_cur_LC_category_utf8(pTHX_ int category)
&& wc == (wchar_t) UNICODE_REPLACEMENT);
}
+# endif
+
restore_switched_locale(LC_CTYPE, original_ctype_locale);
goto finish_and_return;
}
-# endif
# else
/* Here, we must have a C89 compiler that doesn't have mbtowc(). Next
@@ -4885,9 +4886,9 @@ Perl__is_cur_LC_category_utf8(pTHX_ int category)
is_utf8 = TRUE;
goto finish_and_return;
}
- }
# endif
+ }
# endif
/* Other common encodings are the ISO 8859 series, which aren't UTF-8. But
--
2.14.4

View File

@ -1,33 +0,0 @@
From ff58ca57f8442a7e2e74ab4a79a9e542f9a180e7 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Mon, 11 Jun 2018 13:26:24 -0600
Subject: [PATCH] perl.h: Add parens around macro arguments
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Arguments used within macros need to be parenthesized in case they are
called with an expression. This commit changes
_CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG() to do that.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
perl.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/perl.h b/perl.h
index 6f04c6facd..3e1f6cd571 100644
--- a/perl.h
+++ b/perl.h
@@ -5632,7 +5632,7 @@ typedef struct am_table_short AMTS;
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(s, send) \
STMT_START { /* Check if to warn before doing the conversion work */\
if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) { \
- UV cp = utf8_to_uvchr_buf((U8 *) s, (U8 *) send, NULL); \
+ UV cp = utf8_to_uvchr_buf((U8 *) (s), (U8 *) (send), NULL); \
Perl_warner(aTHX_ packWARN(WARN_LOCALE), \
"Wide character (U+%" UVXf ") in %s", \
(cp == 0) \
--
2.14.4

View File

@ -1,32 +0,0 @@
From e1a2878a55b1a7f11f19b384c4ea5235c29866b2 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Mon, 11 Jun 2018 13:28:53 -0600
Subject: [PATCH] regexec.c: Call macro with correct args.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The second argument to this macro is a pointer to the end, as opposed to
a length.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regexec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/regexec.c b/regexec.c
index 7ed8f4fabc..ba52ae97c7 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1808,7 +1808,7 @@ STMT_START {
case trie_flu8: \
_CHECK_AND_WARN_PROBLEMATIC_LOCALE; \
if (UTF8_IS_ABOVE_LATIN1(*uc)) { \
- _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(uc, uc_end - uc); \
+ _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(uc, uc_end); \
} \
goto do_trie_utf8_fold; \
case trie_utf8_exactfa_fold: \
--
2.14.4

View File

@ -1,54 +0,0 @@
From ecbf46993f6ffbdc255f6ded3c6c05a8266a71e8 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 7 Aug 2018 12:26:31 +0100
Subject: [PATCH] Time-HiRes/t/itimer.t: avoid race condition.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This test script sets a repeating interval timer going, and after 4
'ticks' (SIGVTALRM), disables the timer (by setting it to zero).
The main loop which does CPU burning, does a getitmer() every now and
again, and when the value is zero, assumes the signal handler has
disabled the timer, and so finishes.
The trouble was that it was checking the 'time left', which can reach
zero because the interval timer has counted down to zero, and the signal
handler is about to be called, but the interval hasn't been reset back
to 0.4s yet.
i.e. the code doesn't distinguish between "timer disabled" and "timer
just reached zero".
In that scenario, the cleanup code in the test script disables the
SIGVTALRM handler while the timer is still active, and so the process
gets killed if another signal is raised.
This commit changes the test to check the second value returned by
getitmer() for being zero rather than the first - the second being the
repeat interval, whichb is always 0.4 until the timer is disabled.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
dist/Time-HiRes/t/itimer.t | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dist/Time-HiRes/t/itimer.t b/dist/Time-HiRes/t/itimer.t
index e196b1648c..432b224488 100644
--- a/dist/Time-HiRes/t/itimer.t
+++ b/dist/Time-HiRes/t/itimer.t
@@ -51,7 +51,9 @@ ok(defined $virt && abs($virt / 0.5) - 1 < $limit,
printf("# getitimer: %s\n", join(" ",
Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)));
-while (Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)) {
+# burn CPU until the VTALRM signal handler sets the repeat interval to
+# zero, indicating that the timer has fired 4 times.
+while ((Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL))[1]) {
my $j;
for (1..1000) { $j++ } # Can't be unbreakable, must test getitimer().
}
--
2.14.4

View File

@ -1,189 +0,0 @@
From 9d890beed61e079102335ef5859d652b4e2c32ac Mon Sep 17 00:00:00 2001
From: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
Date: Mon, 20 Aug 2018 11:15:20 +0100
Subject: [PATCH] Update Time-Piece to CPAN version 1.33
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[DELTA]
1.33 2018-08-18
- Allow objects in overloaded methods
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
Porting/Maintainers.pl | 2 +-
cpan/Time-Piece/Piece.pm | 40 ++++++++++++++++++++++++----------------
cpan/Time-Piece/Seconds.pm | 2 +-
cpan/Time-Piece/t/06subclass.t | 15 +++++++++++++++
4 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index eaf9ed3262..a137ee9483 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -1208,7 +1208,7 @@ use File::Glob qw(:case);
},
'Time::Piece' => {
- 'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3204.tar.gz',
+ 'DISTRIBUTION' => 'ESAYM/Time-Piece-1.33.tar.gz',
'FILES' => q[cpan/Time-Piece],
'EXCLUDED' => [ qw[reverse_deps.txt] ],
},
diff --git a/cpan/Time-Piece/Piece.pm b/cpan/Time-Piece/Piece.pm
index 8acba86e76..d5624636c6 100644
--- a/cpan/Time-Piece/Piece.pm
+++ b/cpan/Time-Piece/Piece.pm
@@ -6,6 +6,7 @@ use XSLoader ();
use Time::Seconds;
use Carp;
use Time::Local;
+use Scalar::Util qw/ blessed /;
use Exporter ();
@@ -18,7 +19,7 @@ our %EXPORT_TAGS = (
':override' => 'internal',
);
-our $VERSION = '1.3204';
+our $VERSION = '1.33';
XSLoader::load( 'Time::Piece', $VERSION );
@@ -63,13 +64,27 @@ sub gmtime {
$class->_mktime($time, 0);
}
+
+# Check if the supplied param is either a normal array (as returned from
+# localtime in list context) or a Time::Piece-like wrapper around one.
+#
+# We need to differentiate between an array ref that we can interrogate and
+# other blessed objects (like overloaded values).
+sub _is_time_struct {
+ return 1 if ref($_[1]) eq 'ARRAY';
+ return 1 if blessed($_[1]) && $_[1]->isa('Time::Piece');
+
+ return 0;
+}
+
+
sub new {
my $class = shift;
my ($time) = @_;
my $self;
- if (ref($time)) {
+ if ($class->_is_time_struct($time)) {
$self = $time->[c_islocal] ? $class->localtime($time) : $class->gmtime($time);
}
elsif (defined($time)) {
@@ -106,10 +121,9 @@ sub parse {
sub _mktime {
my ($class, $time, $islocal) = @_;
- $class = eval { (ref $class) && (ref $class)->isa('Time::Piece') }
- ? ref $class
- : $class;
- if (ref($time)) {
+ $class = blessed($class) || $class;
+
+ if ($class->_is_time_struct($time)) {
my @new_time = @$time;
my @tm_parts = (@new_time[c_sec .. c_mon], $new_time[c_year]+1900);
$new_time[c_epoch] = $islocal ? timelocal(@tm_parts) : timegm(@tm_parts);
@@ -639,7 +653,8 @@ sub cdate {
sub str_compare {
my ($lhs, $rhs, $reverse) = @_;
- if (UNIVERSAL::isa($rhs, 'Time::Piece')) {
+
+ if (blessed($rhs) && $rhs->isa('Time::Piece')) {
$rhs = "$rhs";
}
return $reverse ? $rhs cmp $lhs->cdate : $lhs->cdate cmp $rhs;
@@ -652,9 +667,6 @@ use overload
sub subtract {
my $time = shift;
my $rhs = shift;
- if (UNIVERSAL::isa($rhs, 'Time::Seconds')) {
- $rhs = $rhs->seconds;
- }
if (shift)
{
@@ -667,7 +679,7 @@ sub subtract {
return $rhs - "$time";
}
- if (UNIVERSAL::isa($rhs, 'Time::Piece')) {
+ if (blessed($rhs) && $rhs->isa('Time::Piece')) {
return Time::Seconds->new($time->epoch - $rhs->epoch);
}
else {
@@ -679,10 +691,6 @@ sub subtract {
sub add {
my $time = shift;
my $rhs = shift;
- if (UNIVERSAL::isa($rhs, 'Time::Seconds')) {
- $rhs = $rhs->seconds;
- }
- croak "Invalid rhs of addition: $rhs" if ref($rhs);
return $time->_mktime(($time->epoch + $rhs), $time->[c_islocal]);
}
@@ -692,7 +700,7 @@ use overload
sub get_epochs {
my ($lhs, $rhs, $reverse) = @_;
- if (!UNIVERSAL::isa($rhs, 'Time::Piece')) {
+ unless (blessed($rhs) && $rhs->isa('Time::Piece')) {
$rhs = $lhs->new($rhs);
}
if ($reverse) {
diff --git a/cpan/Time-Piece/Seconds.pm b/cpan/Time-Piece/Seconds.pm
index 3a56b74485..71a4bd27f2 100644
--- a/cpan/Time-Piece/Seconds.pm
+++ b/cpan/Time-Piece/Seconds.pm
@@ -1,7 +1,7 @@
package Time::Seconds;
use strict;
-our $VERSION = '1.3204';
+our $VERSION = '1.33';
use Exporter 5.57 'import';
diff --git a/cpan/Time-Piece/t/06subclass.t b/cpan/Time-Piece/t/06subclass.t
index d6e4315c8f..a72cfb89ac 100644
--- a/cpan/Time-Piece/t/06subclass.t
+++ b/cpan/Time-Piece/t/06subclass.t
@@ -35,6 +35,21 @@ for my $method (qw(new localtime gmtime)) {
isa_ok($diff, $class, "yesterday via subtraction operator");
}
+{
+ my $g = $class->gmtime;
+ my $l = $class->localtime;
+
+ #via clone
+ my $l_clone = $class->new($l);
+ isa_ok($l_clone, $class, 'custom localtime via clone');
+ cmp_ok("$l_clone", 'eq', "$l", 'Clones match');
+
+ #via clone with gmtime
+ my $g_clone = $class->new($g);
+ isa_ok($g_clone, $class, 'custom gmtime via clone');
+ cmp_ok("$g_clone", 'eq', "$g", 'Clones match');
+}
+
{
# let's verify that we can use gmtime from T::P without the export magic
my $piece = Time::Piece::gmtime;
--
2.14.4

View File

@ -1,81 +0,0 @@
From 028f02e7e97a6026ba9ef084c3803ea08d36aa5b Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 1 Aug 2018 11:55:22 +1000
Subject: [PATCH 1/2] (perl #133314) test for handle leaks from in-place
editing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/io/nargv.t | 46 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
diff --git a/t/io/nargv.t b/t/io/nargv.t
index 598ceed617..4482572aeb 100644
--- a/t/io/nargv.t
+++ b/t/io/nargv.t
@@ -6,7 +6,7 @@ BEGIN {
set_up_inc('../lib');
}
-print "1..6\n";
+print "1..7\n";
my $j = 1;
for $i ( 1,2,5,4,3 ) {
@@ -84,6 +84,50 @@ sub other {
}
}
+{
+ # (perl #133314) directory handle leak
+ #
+ # We process a significant number of files here to make sure any
+ # leaks are significant
+ @ARGV = mkfiles(1 .. 10);
+ for my $file (@ARGV) {
+ open my $f, ">", $file;
+ print $f "\n";
+ close $f;
+ }
+ local $^I = ".bak";
+ local $_;
+ while (<>) {
+ s/^/foo/;
+ }
+}
+
+{
+ # (perl #133314) directory handle leak
+ # We open three handles here because the file processing opened:
+ # - the original file
+ # - the output file, and finally
+ # - the directory
+ # so we need to open the first two to use up the slots used for the original
+ # and output files.
+ # This test assumes fd are allocated in the typical *nix way - lowest
+ # available, which I believe is the case for the Win32 CRTs too.
+ # If this turns out not to be the case this test will need to skip on
+ # such platforms or only run on a small set of known-good platforms.
+ my $tfile = mkfiles(1);
+ open my $f, "<", $tfile
+ or die "Cannot open temp: $!";
+ open my $f2, "<", $tfile
+ or die "Cannot open temp: $!";
+ open my $f3, "<", $tfile
+ or die "Cannot open temp: $!";
+ print +(fileno($f3) < 20 ? "ok" : "not ok"), " 7 check fd leak\n";
+ close $f;
+ close $f2;
+ close $f3;
+}
+
+
my @files;
sub mkfiles {
foreach (@_) {
--
2.14.4

View File

@ -1,49 +0,0 @@
From 016c8ffcc6c9d41d145035ef5df607568880e3b3 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Tue, 24 Jul 2018 17:20:08 -0600
Subject: [PATCH] utf8.c: Make safer a deprecated function
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This function is only called from deprecated functions, but they may be
moved to ppport.h. It is lacking a length parameter, so malformed UTF-8
may cause it to read beyond the buffer. This commit causes it to not
read beyond a NUL character, which makes it safe for the common case
that the input is a C string.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
utf8.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/utf8.c b/utf8.c
index 8471fb8093..3062f58338 100644
--- a/utf8.c
+++ b/utf8.c
@@ -3100,7 +3100,9 @@ S_is_utf8_common(pTHX_ const U8 *const p, SV **swash,
* Note that it is assumed that the buffer length of <p> is enough to
* contain all the bytes that comprise the character. Thus, <*p> should
* have been checked before this call for mal-formedness enough to assure
- * that. */
+ * that. This function, does make sure to not look past any NUL, so it is
+ * safe to use on C, NUL-terminated, strings */
+ STRLEN len = my_strnlen((char *) p, UTF8SKIP(p));
PERL_ARGS_ASSERT_IS_UTF8_COMMON;
@@ -3109,9 +3111,8 @@ S_is_utf8_common(pTHX_ const U8 *const p, SV **swash,
* as far as there being enough bytes available in it to accommodate the
* character without reading beyond the end, and pass that number on to the
* validating routine */
- if (! isUTF8_CHAR(p, p + UTF8SKIP(p))) {
- _force_out_malformed_utf8_message(p, p + UTF8SKIP(p),
- _UTF8_NO_CONFIDENCE_IN_CURLEN,
+ if (! isUTF8_CHAR(p, p + len)) {
+ _force_out_malformed_utf8_message(p, p + len, _UTF8_NO_CONFIDENCE_IN_CURLEN,
1 /* Die */ );
NOT_REACHED; /* NOTREACHED */
}
--
2.14.4

View File

@ -1,111 +0,0 @@
From 0fe04e1dc741a43190e79a985fb0cec0493ebfe9 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Wed, 29 Aug 2018 14:32:24 +0100
Subject: [PATCH] multiconcat: mutator not seen in (lex = ...) .= ...
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RT #133441
TL;DR:
(($lex = expr1.expr2) .= expr3) was being misinterpreted as
(expr1 . expr2 . expr3) when the ($lex = expr1) subtree had had the
assign op optimised away by the OPpTARGET_MY optimisation.
Full details.
S_maybe_multiconcat() looks for suitable chains of OP_CONCAT to convert
into a single OP_MULTICONCAT.
Part of the code needs to distinguish between (expr . expr) and
(expr .= expr). This didn't used to be easy, as both are just OP_CONCAT
ops, but with the OPf_STACKED set on the second one. But...
perl also used to optimise ($a . $b . $c) into ($a . $b) .= $c, to
reuse the padtmp returned by the $a.$b concat. This meant that an
OP_CONCAT could have the OPf_STACKED flag on even when it was a '.'
rather than a '.='.
I disambiguated these cases by seeing whether the top op in the LHS
expression had the OPf_MOD flag set too - if so, it implies '.='.
This fails in the specific case where the LHS expression is a
sub-expression which is assigned to a lexical variable, e.g.
($lex = $a+$b) .= $c.
Initially the top node in the LHS expression above is OP_SASSIGN, with
OPf_MOD set due to the enclosing '.='. Then the OPpTARGET_MY
optimisation kicks in, and the ($lex = $a + $b) part of the optree is
converted from
sassign sKPRMS
add[t4] sK
padsv[a$] s
padsv[$b] s
padsv[$lex] s
to
add[$lex] sK/TARGMY
padsv[a$] s
padsv[$b] s
which is all fine and dandy, except that the top node of that optree no
longer has the OPf_MOD flag set, which trips up S_maybe_multiconcat into
no longer spotting that the outer concat is a '.=' rather than a '.'.
Whether the OPpTARGET_MY optimising code should copy the OPf_MOD from
the being-removed sassign op to its successor is an issue I won't
address here. But in the meantime, the good news is that for 5.28.0
I added the OPpCONCAT_NESTED private flag, which is set whenever
($a . $b . $c) is optimised into ($a . $b) .= $c. This means that it's
no longer necessary to inspect the OPf_MOD flag of the first child to
disambiguate the two cases. So the fix is trivial.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
op.c | 1 -
t/opbasic/concat.t | 10 +++++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/op.c b/op.c
index ddeb484b64..d0dcffbecb 100644
--- a/op.c
+++ b/op.c
@@ -2722,7 +2722,6 @@ S_maybe_multiconcat(pTHX_ OP *o)
}
else if ( topop->op_type == OP_CONCAT
&& (topop->op_flags & OPf_STACKED)
- && (cUNOPo->op_first->op_flags & OPf_MOD)
&& (!(topop->op_private & OPpCONCAT_NESTED))
)
{
diff --git a/t/opbasic/concat.t b/t/opbasic/concat.t
index 9ce9722f5c..4b73b22c1c 100644
--- a/t/opbasic/concat.t
+++ b/t/opbasic/concat.t
@@ -39,7 +39,7 @@ sub is {
return $ok;
}
-print "1..253\n";
+print "1..254\n";
($a, $b, $c) = qw(foo bar);
@@ -853,3 +853,11 @@ package RT132595 {
my $res = $a.$t.$a.$t;
::is($res, "b1c1b1c2", "RT #132595");
}
+
+# RT #133441
+# multiconcat wasn't seeing a mutator as a mutator
+{
+ my ($a, $b) = qw(a b);
+ ($a = 'A'.$b) .= 'c';
+ is($a, "Abc", "RT #133441");
+}
--
2.14.4

View File

@ -1,79 +0,0 @@
From 2460a4968c375f226973ba7e7e5fe6cf5a997ddb Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 21 Feb 2018 16:24:08 +1100
Subject: [PATCH] (perl #132683) don't try to convert PL_sv_placeholder into a
CV
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Constant folding sets PL_warnhook to PERL_WARNHOOK_FATAL, which is
&PL_sv_placeholder, an undef SV.
If warn() is called while constant folding, invoke_exception_hook()
attempts to use the value of a non-NULL PL_warnhook as a CV, which
caused an undefined value warning.
invoke_exception_hook() now treats a PL_warnhook of PERL_WARNHOOK_FATAL
the same as NULL, falling back to the normal warning handling which
throws an exception to abort constant folding.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/lib/warnings/util | 29 +++++++++++++++++++++++++++++
util.c | 2 +-
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/t/lib/warnings/util b/t/lib/warnings/util
index e82d6a6617..92be6efa73 100644
--- a/t/lib/warnings/util
+++ b/t/lib/warnings/util
@@ -106,3 +106,32 @@ no warnings 'portable' ;
$a = oct "0047777777777" ;
EXPECT
Octal number > 037777777777 non-portable at - line 5.
+########
+# util.c
+# NAME 132683: Use of uninitialized value" in warn() with constant folding and overloaded numbers
+use strict;
+use warnings;
+
+package Foo;
+
+use overload log => sub {
+ warn "here\n"; # Use of uninitialized value in warn
+ CORE::log($_[0]->{value});
+};
+
+sub import {
+ overload::constant
+ integer => sub { __PACKAGE__->new($_[0]) };
+}
+
+sub new {
+ my ($class, $value) = @_;
+ bless {value => $value}, $class;
+}
+
+package main;
+
+BEGIN { Foo->import }
+my $x = log(2);
+EXPECT
+here
diff --git a/util.c b/util.c
index 37a71a1a81..ff88a54bf6 100644
--- a/util.c
+++ b/util.c
@@ -1534,7 +1534,7 @@ S_invoke_exception_hook(pTHX_ SV *ex, bool warn)
/* sv_2cv might call Perl_croak() or Perl_warner() */
SV * const oldhook = *hook;
- if (!oldhook)
+ if (!oldhook || oldhook == PERL_WARNHOOK_FATAL)
return FALSE;
ENTER;
--
2.14.4

View File

@ -1,58 +0,0 @@
From 8508806268d1abe6c533393333ad151e12adfc2d Mon Sep 17 00:00:00 2001
From: Slaven Rezic <srezic@cpan.org>
Date: Wed, 3 Oct 2018 10:07:32 -0400
Subject: [PATCH] Accept also ESTALE (fix for RT #133534)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ESTALE may occur in some environments when accessing a
now non-existing directory, e.g. when using NFS or in docker
containers.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
dist/PathTools/t/cwd_enoent.t | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dist/PathTools/t/cwd_enoent.t b/dist/PathTools/t/cwd_enoent.t
index 8f3a1fb1fb..510c65ed0c 100644
--- a/dist/PathTools/t/cwd_enoent.t
+++ b/dist/PathTools/t/cwd_enoent.t
@@ -2,7 +2,7 @@ use warnings;
use strict;
use Config;
-use Errno qw(ENOENT);
+use Errno qw();
use File::Temp qw(tempdir);
use Test::More;
@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){
plan tests => 8;
require Cwd;
+my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ()));
foreach my $type (qw(regular perl)) {
SKIP: {
skip "_perl_abs_path() not expected to work", 4
@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) {
$res = Cwd::getcwd();
$eno = 0+$!;
is $res, undef, "$type getcwd result on non-existent directory";
- is $eno, ENOENT, "$type getcwd errno on non-existent directory";
+ ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory")
+ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
$! = 0;
$res = Cwd::abs_path(".");
$eno = 0+$!;
is $res, undef, "$type abs_path result on non-existent directory";
- is $eno, ENOENT, "$type abs_path errno on non-existent directory";
+ ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory")
+ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
}
}
--
2.17.2

View File

@ -1,35 +0,0 @@
From c950d6fa306a1a0a1e28ece3646aec9490a7ea0e Mon Sep 17 00:00:00 2001
From: James E Keenan <jkeenan@cpan.org>
Date: Sat, 15 Dec 2018 10:29:12 -0500
Subject: [PATCH] Avoid "Use of uninitialized value $res in numeric eq (==)"
warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The test within the SKIP block expects $res to be undef, but the 'skip'
condition itself expects it to be defined and numeric. So we were
getting an uninitialized value warning. In 'skip' condition, test for
definedness before numeric comparison.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/GDBM_File/t/fatal.t | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t
index 01068f3cf4..1cbfdc6018 100644
--- a/ext/GDBM_File/t/fatal.t
+++ b/ext/GDBM_File/t/fatal.t
@@ -52,7 +52,7 @@ my $res = eval {
};
SKIP: {
- skip "Can't trigger failure", 2 if $res == 99;
+ skip "Can't trigger failure", 2 if (defined $res and $res == 99);
is $res, undef, "eval should return undef";
--
2.17.2

View File

@ -1,29 +0,0 @@
From c4df8c74c98b6ecac7f95d0184638f24f0a13bcc Mon Sep 17 00:00:00 2001
From: James E Keenan <jkeenan@cpan.org>
Date: Sat, 15 Dec 2018 09:01:55 -0500
Subject: [PATCH] Correct spelling error in 'skip' message
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/GDBM_File/t/fatal.t | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/GDBM_File/t/fatal.t b/ext/GDBM_File/t/fatal.t
index 159916901a..01068f3cf4 100644
--- a/ext/GDBM_File/t/fatal.t
+++ b/ext/GDBM_File/t/fatal.t
@@ -52,7 +52,7 @@ my $res = eval {
};
SKIP: {
- skip "Can't tigger failure", 2 if $res == 99;
+ skip "Can't trigger failure", 2 if $res == 99;
is $res, undef, "eval should return undef";
--
2.17.2

View File

@ -1,38 +0,0 @@
From 9ba9a28aaea66bad2de041880a2c4210a911dda6 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Wed, 21 Nov 2018 12:09:45 +0000
Subject: [PATCH] S_hv_delete_common(): avoid undefined behaviour
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ASAN -fsanitize-undefined was tripping on the second of these two lines:
svp = AvARRAY(isa);
end = svp + AvFILLp(isa)+1;
In the case where svp is NULL and AvFILLp(isa) is -1, the first addition
is undefined behaviour. Add the 1 first, so that it becomes
svp + (-1+1), which is safe.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
hv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hv.c b/hv.c
index d3d02d1046..fc90a5146b 100644
--- a/hv.c
+++ b/hv.c
@@ -1295,7 +1295,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
SV **svp, **end;
strip_magic:
svp = AvARRAY(isa);
- end = svp + AvFILLp(isa)+1;
+ end = svp + (AvFILLp(isa)+1);
while (svp < end) {
if (*svp)
mg_free_type(*svp, PERL_MAGIC_isaelem);
--
2.17.2

View File

@ -1,118 +0,0 @@
From 278d8c58e85c646b61e60fe48207e090278bb61c Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 27 Nov 2018 13:26:39 +0000
Subject: [PATCH] handle /(?(?{code}))/ mixed compile-and runtime
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Where a runtime pattern contains both compile-time and run-time code
blocks, e.g.:
$re = '(?{ RRR })';
/ $re X(?{ CCC })Y/
The compile-time code-block CCC is parsed at the same time as the
surrounding text. The runtime code RRR is parsed at runtime by
constructing a fake pattern and re-parsing it, but with any compile-time
code-blocks blanked out (so they don't get compiled twice). The compiled
regex is then thrown away, but any optrees just created for the runtime
code blocks are kept.
For example at runtime, the re-parsed pattern looks like:
/ (?{ RRR }) X__________Y/
Unfortunately this was failing for the conditional pattern, e.g.
/ $re X(?(?{ CCC }))Y/
which was getting blanked as
/ (?{ RRR }) X(?_______)Y/
which isn't valid syntax.
This commit blanks (?{...}) into (?=====) instead which is always legal.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 24 +++++++++++++++++++-----
t/re/pat_re_eval.t | 17 ++++++++++++++++-
2 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/regcomp.c b/regcomp.c
index bf987f6e28..ff26f2242f 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -6756,13 +6756,27 @@ S_compile_runtime_code(pTHX_ RExC_state_t * const pRExC_state,
&& n < pRExC_state->code_blocks->count
&& s == pRExC_state->code_blocks->cb[n].start)
{
- /* blank out literal code block */
- assert(pat[s] == '(');
- while (s <= pRExC_state->code_blocks->cb[n].end) {
- *p++ = '_';
+ /* blank out literal code block so that they aren't
+ * recompiled: eg change from/to:
+ * /(?{xyz})/
+ * /(?=====)/
+ * and
+ * /(??{xyz})/
+ * /(?======)/
+ * and
+ * /(?(?{xyz}))/
+ * /(?(?=====))/
+ */
+ assert(pat[s] == '(');
+ assert(pat[s+1] == '?');
+ *p++ = '(';
+ *p++ = '?';
+ s += 2;
+ while (s < pRExC_state->code_blocks->cb[n].end) {
+ *p++ = '=';
s++;
}
- s--;
+ *p++ = ')';
n++;
continue;
}
diff --git a/t/re/pat_re_eval.t b/t/re/pat_re_eval.t
index f88a8651a1..8325451377 100644
--- a/t/re/pat_re_eval.t
+++ b/t/re/pat_re_eval.t
@@ -23,7 +23,7 @@ BEGIN {
our @global;
-plan tests => 502; # Update this when adding/deleting tests.
+plan tests => 504; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -1301,6 +1301,21 @@ sub run_tests {
ok /^$qr$/, "RT #132772 - run time time qr//";
}
+ # RT #133687
+ # mixing compile-time (?(?{code})) with run-time code blocks
+ # was failing, because the second pass through the parser
+ # (which compiles the runtime code blocks) was failing to adequately
+ # mask the compile-time code blocks to shield them from a second
+ # compile: /X(?{...})Y/ was being correctly masked as /X________Y/
+ # but /X(?(?{...}))Y/ was being incorrectly masked as
+ # /X(?________)Y/
+
+ {
+ use re 'eval';
+ my $runtime_re = '(??{ "A"; })';
+ ok "ABC" =~ /^ $runtime_re (?(?{ 1; })BC) $/x, 'RT #133687 yes';
+ ok "ABC" =~ /^ $runtime_re (?(?{ 0; })xy|BC) $/x, 'RT #133687 yes|no';
+ }
} # End of sub run_tests
--
2.17.2

View File

@ -1,45 +0,0 @@
From eb699a9c8fb7ddfcafc714f1eba1bbc395dc3675 Mon Sep 17 00:00:00 2001
From: Hauke D <haukex@zero-g.net>
Date: Wed, 12 Dec 2018 22:26:26 +0100
Subject: [PATCH] First "eof" should return true
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When no file has previously been opened, "eof" should return true. This
behavior was broken by 32e653230c7ccc (see also [#60978]).
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
pp_sys.c | 2 +-
t/io/tell.t | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/pp_sys.c b/pp_sys.c
index 5dc20b14f0..e28e8906f1 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -2121,7 +2121,7 @@ PP(pp_eof)
}
if (!gv)
- RETPUSHNO;
+ RETPUSHYES;
if ((io = GvIO(gv)) && (mg = SvTIED_mg((const SV *)io, PERL_MAGIC_tiedscalar))) {
return tied_method1(SV_CONST(EOF), SP, MUTABLE_SV(io), mg, newSVuv(which));
diff --git a/t/io/tell.t b/t/io/tell.t
index 30adafbc01..ba106f0cc7 100644
--- a/t/io/tell.t
+++ b/t/io/tell.t
@@ -189,7 +189,6 @@ seek *$fh,0,0;
is(tell, 0, "argless tell after seek *\$coercible...");
{
- local $TODO = "not fixed yet";
# [perl #133721]
fresh_perl_is(<<'EOI', 'ok', {}, 'eof with no ${^LAST_FH}');
print "ok" if eof;
--
2.17.2

View File

@ -1,174 +0,0 @@
From 739762602079d68c47cbde3b29275e844d0c92ef Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Thu, 10 Jan 2019 20:59:31 -0700
Subject: [PATCH] PATCH: [perl #133756] Failure to match properly
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This was caused by a counting error.
An EXACTFish regnode has a finite length it can hold for the string
being matched. If that length is exceeded, a 2nd node is used for the
next segment of the string, for as many regnodes as are needed.
A problem occurs if a regnode ends with one of the 22 characters in
Unicode 11 that occur in non-final positions of a multi-character fold.
The design of the pattern matching engine doesn't allow matches across
regnodes. Consider, for example if a node ended in the letter 'f' and
the next node begins with the letter 'i'. That sequence should match,
under /i, the ligature "fi" (U+FB01). But it wouldn't because the
pattern splits them across nodes. The solution I adopted was to forbid
a node to end with one of those 22 characters if there is another string
node that follows it. This is not fool proof, for example, if the
entire node consisted of only these characters, one would have to split
it at some position (In that case, we just take as much of the string as
will fit.) But for real life applications, it is good enough.
What happens if a node ends with one of the 22, is that the node is
shortened so that those are instead placed at the beginning of the
following node. When the code encounters this situation, it backs off
until it finds a character that isn't a non-final fold one, and closes
the node with that one.
A /i node is filled with the fold of the input, for several reasons.
The most obvious is that it saves time, you can skip folding the pattern
at runtime. But there are reasons based on the design of the optimzer
as well, which I won't go into here, but are documented in regcomp.c.
When we back out the final characters in a node, we also have to back
out the corresponding unfolded characters in the input, so that those
can be (folded) into the following node. Since the number of characters
in the fold may not be the same as unfolded, there is not an easily
discernable correspondence between the input and the folded output.
That means that generally, what has to be done is that the input is
reparsed from the beginning of the node, but the permitted length has
been shortened (we know precisely how much to shorten it to) so that it
will end with something other than the 22. But, the code saves the
previous input character's position (for other reasons), so if we only
have to backup one character, we can just use that and not have to
reparse.
This bug was that the code thought a two character backup was really a
one character one, and did not reparse the node, creating an off-by-one
error, and a character was simply omitted in the pattern (that should
have started the following node). And the input had two of the 22
characters adjacent to each other in just the right positions that the
node was split. The bisect showed that when the node size was changed
the bug went away, at least for this particular input string. But a
different, longer, string would have triggered the bug, and this commit
fixes that.
This bug is actually very unlikely to occur in most real world
applications. That is because other changes in the regex compiler have
caused nodes to be split so that things that don't particpate in folds
at all are separated out into EXACT nodes. (The reason for that is it
allows the optimizer things to grab on to under /i that it wouldn't
otherwise have known about.) That means that anything like this string
would never cause the bug to happen because blanks and commas, etc.
would be in separate nodes, and so no node would ever get large enough
to fill the 238 available byte slots in a node (235 on EBCDIC). Only a
long string without punctuation would trigger it. I have artificially
constructed such a string in the tests added by this commit.
One of the 22 characters is 't', so long strings of DNA "ACTG" could
trigger this bug. I find it somewhat amusing that this is something
like a DNA transcription error, which occurs in nature at very low
rates, but selection, it is believed, will make sure the error rate is
above zero.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 15 ++++++++++-----
t/re/pat_advanced.t | 27 +++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/regcomp.c b/regcomp.c
index 56b83f964a..58cb941b06 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -14377,6 +14377,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
* identifies, so when it is set to less than the full node, we can
* skip the rest of this */
if (FOLD && p < RExC_end && upper_parse == MAX_NODE_STRING_SIZE) {
+ PERL_UINT_FAST8_T backup_count = 0;
const STRLEN full_len = len;
@@ -14393,7 +14394,9 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
goto loopdone;
}
- while (--s >= s0 && IS_NON_FINAL_FOLD(*s)) { }
+ while (--s >= s0 && IS_NON_FINAL_FOLD(*s)) {
+ backup_count++;
+ }
len = s - s0 + 1;
}
else {
@@ -14435,6 +14438,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
* special case the very first byte in the string, so
* we don't read outside the string */
s = (s == s0) ? s -1 : (char *) utf8_hop((U8 *) s, -1);
+ backup_count++;
} /* End of loop backwards through the string */
/* If there were only problematic characters in the string,
@@ -14458,12 +14462,13 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
} else {
/* Here, the node does contain some characters that aren't
- * problematic. If one such is the final character in the
- * node, we are done */
- if (len == full_len) {
+ * problematic. If we didn't have to backup any, then the
+ * final character in the node is non-problematic, and we
+ * can take the node as-is */
+ if (backup_count == 0) {
goto loopdone;
}
- else if (len + ((UTF) ? UTF8SKIP(s) : 1) == full_len) {
+ else if (backup_count == 1) {
/* If the final character is problematic, but the
* penultimate is not, back-off that last character to
diff --git a/t/re/pat_advanced.t b/t/re/pat_advanced.t
index d90ceeb5bd..ade8b1587a 100644
--- a/t/re/pat_advanced.t
+++ b/t/re/pat_advanced.t
@@ -2176,6 +2176,33 @@ EOP
}
}
ok(! $failed, "Matched multi-char fold 'ss' across EXACTF node boundaries; if failed, was at count $failed");
+
+ for my $non_finals ("t", "ft", "ift", "sift") {
+ my $base_pat = $non_finals . "enKalt"; # (The tail is taken from
+ # the trouble ticket, is
+ # arbitrary)
+ for my $utf8 ("non-UTF-8", "UTF-8") {
+
+ # Try at different lengths to be sure to get a node boundary
+ for my $repeat (120 .. 270) { # [perl #133756]
+ my $head = ("b" x $repeat) . "\xDC";
+ my $pat = $base_pat;
+ utf8::upgrade($pat) if $utf8 eq "UTF-8";
+ $pat = $head . $pat;
+ my $text = $head . $base_pat;
+
+ if ($text !~ /$pat/i) {
+ $failed = $repeat;
+ last;
+ }
+ }
+
+ ok(! $failed, "A non-final fold character "
+ . (length($non_finals) - 1)
+ . " characters from the end of an EXACTFish"
+ . " $utf8 pattern works; if failed, was at count $failed");
+ }
+ }
}
{
--
2.17.2

View File

@ -1,111 +0,0 @@
From 35ad0133df9b65a4e32f2f07a2a05b387bd79591 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 3 Jan 2019 10:48:05 +1100
Subject: [PATCH] (perl #133575) prevent set/longjmp clobbering locals in
S_fold_constants
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
My original approach moved the whole switch into the new function,
but that was a lot messier, and I don't think it's necessary.
pad_swipe() can throw, but only for panics, and in DESTROY if
refadjust is true, which isn't the case here.
CLEAR_ERRSV() might throw if the code called by CALLRUNOPS()
puts an object that dies in DESTROY in $@, but I think that
might cause an infinite loop in the original code.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
op.c | 32 ++++++++++++++++++++++++--------
1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/op.c b/op.c
index 146407ba70..0b46b348cb 100644
--- a/op.c
+++ b/op.c
@@ -5464,15 +5464,34 @@ S_op_integerize(pTHX_ OP *o)
return o;
}
+/* This function exists solely to provide a scope to limit
+ setjmp/longjmp() messing with auto variables.
+ */
+PERL_STATIC_INLINE int
+S_fold_constants_eval(pTHX) {
+ int ret = 0;
+ dJMPENV;
+
+ JMPENV_PUSH(ret);
+
+ if (ret == 0) {
+ CALLRUNOPS(aTHX);
+ }
+
+ JMPENV_POP;
+
+ return ret;
+}
+
static OP *
S_fold_constants(pTHX_ OP *const o)
{
dVAR;
- OP * volatile curop;
+ OP *curop;
OP *newop;
- volatile I32 type = o->op_type;
+ I32 type = o->op_type;
bool is_stringify;
- SV * volatile sv = NULL;
+ SV *sv = NULL;
int ret = 0;
OP *old_next;
SV * const oldwarnhook = PL_warnhook;
@@ -5480,7 +5499,6 @@ S_fold_constants(pTHX_ OP *const o)
COP not_compiling;
U8 oldwarn = PL_dowarn;
I32 old_cxix;
- dJMPENV;
PERL_ARGS_ASSERT_FOLD_CONSTANTS;
@@ -5582,15 +5600,15 @@ S_fold_constants(pTHX_ OP *const o)
assert(IN_PERL_RUNTIME);
PL_warnhook = PERL_WARNHOOK_FATAL;
PL_diehook = NULL;
- JMPENV_PUSH(ret);
/* Effective $^W=1. */
if ( ! (PL_dowarn & G_WARN_ALL_MASK))
PL_dowarn |= G_WARN_ON;
+ ret = S_fold_constants_eval(aTHX);
+
switch (ret) {
case 0:
- CALLRUNOPS(aTHX);
sv = *(PL_stack_sp--);
if (o->op_targ && sv == PAD_SV(o->op_targ)) { /* grab pad temp? */
pad_swipe(o->op_targ, FALSE);
@@ -5608,7 +5626,6 @@ S_fold_constants(pTHX_ OP *const o)
o->op_next = old_next;
break;
default:
- JMPENV_POP;
/* Don't expect 1 (setjmp failed) or 2 (something called my_exit) */
PL_warnhook = oldwarnhook;
PL_diehook = olddiehook;
@@ -5616,7 +5633,6 @@ S_fold_constants(pTHX_ OP *const o)
* the stack - eg any nested evals */
Perl_croak(aTHX_ "panic: fold_constants JMPENV_PUSH returned %d", ret);
}
- JMPENV_POP;
PL_dowarn = oldwarn;
PL_warnhook = oldwarnhook;
PL_diehook = olddiehook;
--
2.17.2

View File

@ -1,41 +0,0 @@
From b4e880f3b5c8c8ba39c7c767167801a7caf81821 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 2 Jan 2019 11:49:47 +1100
Subject: [PATCH] [perl #133721] TODO test for eof with no ${^LAST_FH}
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/io/tell.t | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/t/io/tell.t b/t/io/tell.t
index 7a046ca6b3..30adafbc01 100644
--- a/t/io/tell.t
+++ b/t/io/tell.t
@@ -6,7 +6,7 @@ BEGIN {
set_up_inc('../lib');
}
-plan(35);
+plan(36);
$TST = 'TST';
@@ -187,3 +187,11 @@ seek $fh,0,0;
is(tell, 0, "argless tell after seek \$coercible...");
seek *$fh,0,0;
is(tell, 0, "argless tell after seek *\$coercible...");
+
+{
+ local $TODO = "not fixed yet";
+ # [perl #133721]
+ fresh_perl_is(<<'EOI', 'ok', {}, 'eof with no ${^LAST_FH}');
+print "ok" if eof;
+EOI
+}
--
2.17.2

View File

@ -1,68 +0,0 @@
From 61d4c87c940fea028f08f27addc275b469320fda Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Mon, 18 Feb 2019 09:19:38 +0000
Subject: [PATCH] Perl_my_cxt_init: fix potential race condition
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
(Found by code inspection - I can't reproduce a failure)
the MY_CXT subsystem, which allows per-thread pseudo-static variables,
has a thread race condition.
When a module is first loaded, it is allocated unique index (from
PL_my_cxt_index++) which is assigned to the module's my_cxt_index static
var.
If two threads both try to load an XS module at the same time, its
possible for one thread to set my_cxtp, then a second thread to overwrite
it with a higher value, causing the first thread to use the wrong index
into its local storage.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
util.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/util.c b/util.c
index 5b6f4bfd27..ae86a8c4a4 100644
--- a/util.c
+++ b/util.c
@@ -5218,10 +5218,16 @@ Perl_my_cxt_init(pTHX_ int *index, size_t size)
dVAR;
void *p;
PERL_ARGS_ASSERT_MY_CXT_INIT;
+ /* do initial check without locking.
+ * -1: not allocated or another thread currently allocating
+ * other: already allocated by another thread
+ */
if (*index == -1) {
- /* this module hasn't been allocated an index yet */
MUTEX_LOCK(&PL_my_ctx_mutex);
- *index = PL_my_cxt_index++;
+ /*now a stricter check with locking */
+ if (*index == -1)
+ /* this module hasn't been allocated an index yet */
+ *index = PL_my_cxt_index++;
MUTEX_UNLOCK(&PL_my_ctx_mutex);
}
@@ -5278,9 +5284,12 @@ Perl_my_cxt_init(pTHX_ const char *my_cxt_key, size_t size)
index = Perl_my_cxt_index(aTHX_ my_cxt_key);
if (index == -1) {
- /* this module hasn't been allocated an index yet */
MUTEX_LOCK(&PL_my_ctx_mutex);
- index = PL_my_cxt_index++;
+ /*now a stricter check with locking */
+ index = Perl_my_cxt_index(aTHX_ my_cxt_key);
+ if (index == -1)
+ /* this module hasn't been allocated an index yet */
+ index = PL_my_cxt_index++;
MUTEX_UNLOCK(&PL_my_ctx_mutex);
}
--
2.20.1

View File

@ -1,34 +0,0 @@
From eef8d518b95b0221f81805d75bd63fbbf2995f3b Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 12 Mar 2019 07:10:10 +0000
Subject: [PATCH] fix blead on non-threaded builds
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
My recent v5.29.8-64-g02a9632ac4 commit broke unthreaded builds.
This is the obvious fix. I've heard a report that unthreaded perl
SEGVs now but can't reproduce.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
op.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/op.c b/op.c
index 4e49eeeedf..b4ba9c8f83 100644
--- a/op.c
+++ b/op.c
@@ -14716,8 +14716,8 @@ S_maybe_multideref(pTHX_ OP *start, OP *orig_o, UV orig_action, U8 hints)
pass);
}
-#ifdef USE_ITHREADS
if (pass) {
+#ifdef USE_ITHREADS
/* Relocate sv to the pad for thread safety */
op_relocate_sv(&cSVOPo->op_sv, &o->op_targ);
arg->pad_offset = o->op_targ;
--
2.20.1

View File

@ -1,122 +0,0 @@
From 170c919fc4986a85062e9292e4cfed24771d2224 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 19 Mar 2019 10:58:46 +0000
Subject: [PATCH] handle scope error in qr/\(?{/
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RT #133879
In this code:
BEGIN {$^H = 0x10000 }; # HINT_NEW_RE
qr/\(?{/
When the toker sees the 'qr', it looks ahead and thinks that the
pattern *might* contain code blocks, so creates a new anon sub to wrap
compilation of the pattern in (so that any code blocks get compiled as
part of the anon sub rather than the main body of the code).
Normally at the end of parsing the qr construct, the parser notes that
no code blocks were found, and throws the unneeded CV away and
restores the old PL_compcv (via a LEAVE_SCOPE). This false positive is
normal and is expected in the relevant code paths.
However, setting the HINT_NEW_RE (which indicates that
overload::constant is present for qr// but with no overloaded function
actually present) causes an error to be raised. The parser does error
recovery and continues.
However, v5.25.9-148-g7c44985626 added a test to not bother compiling a
pattern if the parser is in an errored state, which again is fine,
except it turns out that if this branch is taken, it skips the 'restore
the old PL_compcv' code, leading to the wrong value for PL_compcv when
ops are freed.
The fix is simple: move the "skip if errored" test to after PL_compcv
has been restored.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
op.c | 20 ++++++++++++++------
t/re/reg_eval_scope.t | 14 +++++++++++++-
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/op.c b/op.c
index 1f7ae3e610..afee9fcf02 100644
--- a/op.c
+++ b/op.c
@@ -7082,11 +7082,6 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
rx_flags |= RXf_SPLIT;
}
- /* Skip compiling if parser found an error for this pattern */
- if (pm->op_pmflags & PMf_HAS_ERROR) {
- return o;
- }
-
if (!has_code || !eng->op_comp) {
/* compile-time simple constant pattern */
@@ -7123,6 +7118,11 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
pm->op_pmflags &= ~PMf_HAS_CV;
}
+ /* Skip compiling if parser found an error for this pattern */
+ if (pm->op_pmflags & PMf_HAS_ERROR) {
+ return o;
+ }
+
PM_SETRE(pm,
eng->op_comp
? eng->op_comp(aTHX_ NULL, 0, expr, eng, NULL, NULL,
@@ -7134,7 +7134,15 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
}
else {
/* compile-time pattern that includes literal code blocks */
- REGEXP* re = eng->op_comp(aTHX_ NULL, 0, expr, eng, NULL, NULL,
+
+ REGEXP* re;
+
+ /* Skip compiling if parser found an error for this pattern */
+ if (pm->op_pmflags & PMf_HAS_ERROR) {
+ return o;
+ }
+
+ re = eng->op_comp(aTHX_ NULL, 0, expr, eng, NULL, NULL,
rx_flags,
(pm->op_pmflags |
((PL_hints & HINT_RE_EVAL) ? PMf_USE_RE_EVAL : 0))
diff --git a/t/re/reg_eval_scope.t b/t/re/reg_eval_scope.t
index 25b90b6482..3bf937d251 100644
--- a/t/re/reg_eval_scope.t
+++ b/t/re/reg_eval_scope.t
@@ -12,7 +12,7 @@ BEGIN {
}
}
-plan 48;
+plan 49;
fresh_perl_is <<'CODE', '781745', {}, '(?{}) has its own lexical scope';
my $x = 7; my $a = 4; my $b = 5;
@@ -371,3 +371,15 @@ SKIP: {
f3();
is ($s, \&f3, '__SUB__ qr multi');
}
+
+# RT #133879
+# ensure scope is properly restored when there's an error compiling a
+# "looks a bit like it has (?{}) but doesn't" qr//
+
+fresh_perl_like <<'CODE',
+ BEGIN {$^H = 0x10000 }; # HINT_NEW_RE
+ qr/\(?{/
+CODE
+ qr/Constant\(qq\) unknown/,
+ { stderr => 1 },
+ 'qr/\(?{';
--
2.20.1

View File

@ -1,54 +0,0 @@
From 06cbc317229e882f379e75eb3adf7cf9c071febd Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Wed, 3 Apr 2019 11:06:22 +0100
Subject: [PATCH] Fix recent double free in S_parse_gv_stash_name()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RT #133977
My recent commit v5.29.9-29-g657ed7c1c1 moved all buffer freeing to
the end of the function, but missed removing one of the existing frees.
The problem was spotted by James E Keenan and diagnosed by Tony Cook; I just
added a test.
A simple reproducer is
my $def = defined *{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'x"};
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
gv.c | 1 -
t/op/stash_parse_gv.t | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/gv.c b/gv.c
index 61085f5c53..3b8759e88a 100644
--- a/gv.c
+++ b/gv.c
@@ -1665,7 +1665,6 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
gvp = (GV**)hv_fetch(*stash, key, is_utf8 ? -((I32)*len) : (I32)*len, add);
*gv = gvp ? *gvp : NULL;
if (!*gv || *gv == (const GV *)&PL_sv_undef) {
- Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
goto notok;
}
/* here we know that *gv && *gv != &PL_sv_undef */
diff --git a/t/op/stash_parse_gv.t b/t/op/stash_parse_gv.t
index 05694ca8ce..bd9e95cf37 100644
--- a/t/op/stash_parse_gv.t
+++ b/t/op/stash_parse_gv.t
@@ -23,7 +23,7 @@ foreach my $t (@tests) {
my ( $sub, $name ) = @$t;
fresh_perl_is(
- qq[sub $sub { print qq[ok\n]} &{"$sub"} ],
+ qq[sub $sub { print qq[ok\n]} &{"$sub"}; my \$d = defined *{"foo$sub"} ],
q[ok],
{ switches => ['-w'] },
$name
--
2.20.1

View File

@ -1,109 +0,0 @@
From 1385ac98c5f75358978bb05c2d6c4134413cf689 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Fri, 22 Mar 2019 17:38:48 +0000
Subject: [PATCH] avoid leak assigning regexp to non-COW string
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In something like
$s = substr(.....); # $s now a non-COW SvPOK() SV
$r = qr/..../;
$s = $$r;
$s's previous string buffer would leak when an SVt_REGEXP type SV is
assigned to it.
Worse, if $s was an SVt_PVPV, it would fail an assert on debugging
builds.
The fix is to make sure any remaining stringy stuff is cleaned up
before copying the REGEXP.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 16 ++++++++++++++++
t/op/qr.t | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/regcomp.c b/regcomp.c
index 15783541a4..e13da83673 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -20665,7 +20665,23 @@ Perl_reg_temp_copy(pTHX_ REGEXP *dsv, REGEXP *ssv)
if (!dsv)
dsv = (REGEXP*) newSV_type(SVt_REGEXP);
else {
+ assert(SvTYPE(dsv) == SVt_REGEXP || (SvTYPE(dsv) == SVt_PVLV));
+
+ /* our only valid caller, sv_setsv_flags(), should have done
+ * a SV_CHECK_THINKFIRST_COW_DROP() by now */
+ assert(!SvOOK(dsv));
+ assert(!SvIsCOW(dsv));
+ assert(!SvROK(dsv));
+
+ if (SvPVX_const(dsv)) {
+ if (SvLEN(dsv))
+ Safefree(SvPVX(dsv));
+ SvPVX(dsv) = NULL;
+ }
+ SvLEN_set(dsv, 0);
+ SvCUR_set(dsv, 0);
SvOK_off((SV *)dsv);
+
if (islv) {
/* For PVLVs, the head (sv_any) points to an XPVLV, while
* the LV's xpvlenu_rx will point to a regexp body, which
diff --git a/t/op/qr.t b/t/op/qr.t
index 32b9e3b23b..e03a465430 100644
--- a/t/op/qr.t
+++ b/t/op/qr.t
@@ -7,7 +7,7 @@ BEGIN {
require './test.pl';
}
-plan(tests => 34);
+plan(tests => 37);
sub r {
return qr/Good/;
@@ -135,3 +135,35 @@ sub {
};
}
pass("PVLV-as-REGEXP double-free of PVX");
+
+# a non-cow SVPV leaked it's string buffer when a REGEXP was assigned to
+# it. Give valgrind/ASan something to work on
+{
+ my $s = substr("ab",0,1); # generate a non-COW string
+ my $r1 = qr/x/;
+ $s = $$r1; # make sure "a" isn't leaked
+ pass("REGEXP leak");
+
+ my $dest = 0;
+ sub Foo99::DESTROY { $dest++ }
+
+ # ditto but make sure we don't leak a reference
+ {
+ my $ref = bless [], "Foo99";
+ my $r2 = qr/x/;
+ $ref = $$r2;
+ }
+ is($dest, 1, "REGEXP RV leak");
+
+ # and worse, assigning a REGEXP to an PVLV that had a string value
+ # caused an assert failure. Same code, but using $_[0] which is an
+ # lvalue, rather than $s.
+
+ my %h;
+ sub {
+ $_[0] = substr("ab",0,1); # generate a non-COW string
+ my $r = qr/x/;
+ $_[0] = $$r; # make sure "a" isn't leaked
+ }->($h{foo}); # passes PVLV to sub
+ is($h{foo}, "(?^:x)", "REGEXP PVLV leak");
+}
--
2.20.1

View File

@ -1,108 +0,0 @@
From 85df897fcfe76250deecfdeb239ba1e4279d8532 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 26 Mar 2019 11:04:07 +0000
Subject: [PATCH] avoid leak with local $h{foo}, $a[n]
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When SAVEt_DELETE / SAVEt_ADELETE deletes a hash/array entry on scope
exit, they also decrement the refcount of the hash/array, and for the
hash, also free the saved key.
However, if the call to hv_delete() or av_delete() dies (e.g. when
calling a tied DELETE method) then the hash/array and key will leak
because leave_scope() calls av/hv_delete(), *then* does the
SvREFCNT_dec() etc.
The fix is to push new FREEPV/FREESV actions just before calling
av/hv_delete().
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
scope.c | 17 ++++++++++++++---
t/op/tie.t | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/scope.c b/scope.c
index 83a7b76893..3e4ee4344b 100644
--- a/scope.c
+++ b/scope.c
@@ -1253,15 +1253,26 @@ Perl_leave_scope(pTHX_ I32 base)
case SAVEt_DELETE:
a0 = ap[0]; a1 = ap[1]; a2 = ap[2];
+ /* hv_delete could die, so free the key and SvREFCNT_dec the
+ * hv by pushing new save actions
+ */
+ /* ap[0] is the key */
+ ap[1].any_uv = SAVEt_FREEPV; /* was len */
+ /* ap[2] is the hv */
+ ap[3].any_uv = SAVEt_FREESV; /* was SAVEt_DELETE */
+ PL_savestack_ix += 4;
(void)hv_delete(a2.any_hv, a0.any_pv, a1.any_i32, G_DISCARD);
- SvREFCNT_dec(a2.any_hv);
- Safefree(a0.any_ptr);
break;
case SAVEt_ADELETE:
a0 = ap[0]; a1 = ap[1];
+ /* av_delete could die, so SvREFCNT_dec the av by pushing a
+ * new save action
+ */
+ ap[0].any_av = a1.any_av;
+ ap[1].any_uv = SAVEt_FREESV;
+ PL_savestack_ix += 2;
(void)av_delete(a1.any_av, a0.any_iv, G_DISCARD);
- SvREFCNT_dec(a1.any_av);
break;
case SAVEt_DESTRUCTOR_X:
diff --git a/t/op/tie.t b/t/op/tie.t
index a2d771a009..bfcafce87a 100644
--- a/t/op/tie.t
+++ b/t/op/tie.t
@@ -1585,3 +1585,40 @@ print "[$x][$f][$n][$s]\n";
EXPECT
[3][1][3][0]
[0][2][3][0]
+########
+# dying while doing a SAVEt_DELETE dureing scope exit leaked a copy of the
+# key. Give ASan something to play with
+sub TIEHASH { bless({}, $_[0]) }
+sub EXISTS { 0 }
+sub DELETE { die; }
+sub DESTROY { print "destroy\n"; }
+
+eval {
+ my %h;
+ tie %h, "main";
+ local $h{foo};
+ print "leaving\n";
+};
+print "left\n";
+EXPECT
+leaving
+destroy
+left
+########
+# ditto for SAVEt_DELETE with an array
+sub TIEARRAY { bless({}, $_[0]) }
+sub EXISTS { 0 }
+sub DELETE { die; }
+sub DESTROY { print "destroy\n"; }
+
+eval {
+ my @a;
+ tie @a, "main";
+ delete local $a[0];
+ print "leaving\n";
+};
+print "left\n";
+EXPECT
+leaving
+destroy
+left
--
2.20.1

View File

@ -1,49 +0,0 @@
From 803bd7c91c63f8f263bed592a33b10cf69f567cf Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Fri, 22 Mar 2019 15:43:56 +0000
Subject: [PATCH] fix leak in BEGIN { threads->new(...) }
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Normally by the time we reach perl_destruct(), PL_parser should be null
due to having its original (null) value restored by SAVEt_PARSER during
leaving scope (usually before run-time starts in fact). But if a thread
is created within a BEGIN block, the parser is duped, but the
SAVEt_PARSER savestack entry isn't. So PL_parser never gets cleaned up.
Clean it up in perl_destruct() instead. This is a bit of a hack.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
perl.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/perl.c b/perl.c
index cdefa99018..1ef425bb25 100644
--- a/perl.c
+++ b/perl.c
@@ -668,6 +668,21 @@ perl_destruct(pTHXx)
FREETMPS;
assert(PL_scopestack_ix == 0);
+ /* normally when we get here, PL_parser should be null due to having
+ * its original (null) value restored by SAVEt_PARSER during leaving
+ * scope (usually before run-time starts in fact).
+ * But if a thread is created within a BEGIN block, the parser is
+ * duped, but the SAVEt_PARSER savestack entry isn't. So PL_parser
+ * never gets cleaned up.
+ * Clean it up here instead. This is a bit of a hack.
+ */
+ if (PL_parser) {
+ /* stop parser_free() stomping on PL_curcop */
+ PL_parser->saved_curcop = PL_curcop;
+ parser_free(PL_parser);
+ }
+
+
/* Need to flush since END blocks can produce output */
/* flush stdout separately, since we can identify it */
#ifdef USE_PERLIO
--
2.20.1

View File

@ -1,62 +0,0 @@
From dd0510590a1124f91ef2c615a64cd9bfbb245dd6 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 26 Mar 2019 14:58:04 +0000
Subject: [PATCH] fix leak in Perl__force_out_malformed_utf8_message()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This function temporarily sets PL_curcop->cop_warnings to pWARN_ALL in
order to enforce mandatory warnings about malformed utf8, but it
didn't restore cop_warnings, so the old value leaked.
Can be reproduced with, e.g.
no warnings 'utf8';
CORE::evalbytes qq{ use utf8; "\\N{abc\x{c0}}"};
which is already exercised in t/uni/parser.t.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
utf8.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/utf8.c b/utf8.c
index e479400b71..84db2f6aee 100644
--- a/utf8.c
+++ b/utf8.c
@@ -53,6 +53,19 @@ within non-zero characters.
=cut
*/
+/* helper for Perl__force_out_malformed_utf8_message(). Like
+ * SAVECOMPILEWARNINGS(), but works with PL_curcop rather than
+ * PL_compiling */
+
+static void
+S_restore_cop_warnings(pTHX_ void *p)
+{
+ if (!specialWARN(PL_curcop->cop_warnings))
+ PerlMemShared_free(PL_curcop->cop_warnings);
+ PL_curcop->cop_warnings = (STRLEN*)p;
+}
+
+
void
Perl__force_out_malformed_utf8_message(pTHX_
const U8 *const p, /* First byte in UTF-8 sequence */
@@ -84,6 +97,10 @@ Perl__force_out_malformed_utf8_message(pTHX_
PL_dowarn = G_WARN_ALL_ON|G_WARN_ON;
if (PL_curcop) {
+ /* this is like SAVECOMPILEWARNINGS() except with PL_curcop rather
+ * than PL_compiling */
+ SAVEDESTRUCTOR_X(S_restore_cop_warnings,
+ (void*)PL_curcop->cop_warnings);
PL_curcop->cop_warnings = pWARN_ALL;
}
--
2.20.1

View File

@ -1,59 +0,0 @@
From 75bb5aa48dfcf930533cd069393fc8a45e4ece18 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Fri, 22 Mar 2019 12:31:57 +0000
Subject: [PATCH] fix leak in cloned regexes.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When a regex is cloned for a new thread, the string buffer (which holds
the text of the original pattern) wasn't being freed because SvLEN was
being set to 0.
For example:
use threads;
my $r = qr/abc/;
threads->new( sub { 1; })->join;
In the new thread, $r is cloned but when the thread exits, the string
buffer holding "(?^:abc)" was leaking.
This was broken by v5.27.2-30-gdf6b4bd565.
The problem was that in the cloned SV, the buffer was copied, but the
SvLEN(sv) was left set at zero, which along with the SVf_FAKE, mader it
look like the buffer was alien and so not freed.
SvLEN was 0 in the parent thread's $r, since $r and its compile-time
prototype share the same string buffer (so only the original SV has
SvLEN > 0 - all the copies - within the same thread - have mother_re
pointing to the original).
When REs are cloned into another thread, mother_re isn't preserved,
so each RE has its own copy of the buffer.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/regcomp.c b/regcomp.c
index 547b9113e3..15783541a4 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -20956,6 +20956,11 @@ Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS *param)
2: something we no longer hold a reference on
so we need to copy it locally. */
RX_WRAPPED(dstr) = SAVEPVN(RX_WRAPPED_const(sstr), SvCUR(sstr)+1);
+ /* set malloced length to a non-zero value so it will be freed
+ * (otherwise in combination with SVf_FAKE it looks like an alien
+ * buffer). It doesn't have to be the actual malloced size, since it
+ * should never be grown */
+ SvLEN_set(dstr, SvCUR(sstr)+1);
ret->mother_re = NULL;
}
#endif /* PERL_IN_XSUB_RE */
--
2.20.1

View File

@ -1,73 +0,0 @@
From 657ed7c1c190e7fad1bac2979944d07245bbeea4 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Tue, 26 Mar 2019 08:56:55 +0000
Subject: [PATCH] fix leak in package name lookup
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
S_parse_gv_stash_name() mallocs a temporary buffer when scanning package
names longer than 64 bytes. Depending on how it exits the function, it
doesn't always free the buffer afterwards. Change the function so that
there are only two exit points (which free the buffer) and make other bits
of code goto those two points.
Can be reproduced with e.g.
&{"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'x"}
Similar code is already present in t/op/stash_parse_gv.t
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
gv.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/gv.c b/gv.c
index ae7f2aa422..61085f5c53 100644
--- a/gv.c
+++ b/gv.c
@@ -1636,7 +1636,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
if (!*stash)
*stash = PL_defstash;
if (!*stash || !SvREFCNT(*stash)) /* symbol table under destruction */
- return FALSE;
+ goto notok;
*len = name_cursor - *name;
if (name_cursor > nambeg) { /* Skip for initial :: or ' */
@@ -1666,7 +1666,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
*gv = gvp ? *gvp : NULL;
if (!*gv || *gv == (const GV *)&PL_sv_undef) {
Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
- return FALSE;
+ goto notok;
}
/* here we know that *gv && *gv != &PL_sv_undef */
if (SvTYPE(*gv) != SVt_PVGV)
@@ -1707,15 +1707,20 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
MUTABLE_HV(SvREFCNT_inc_simple(PL_defstash));
}
}
- Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
- return TRUE;
+ goto ok;
}
}
}
*len = name_cursor - *name;
+ ok:
+ Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
return TRUE;
+ notok:
+ Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
+ return FALSE;
}
+
/* Checks if an unqualified name is in the main stash */
PERL_STATIC_INLINE bool
S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8)
--
2.20.1

View File

@ -1,39 +0,0 @@
From 1113f30d91f662c876a07b357666f02f04a30a75 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Mon, 25 Mar 2019 17:18:58 +0000
Subject: [PATCH] fix leak with local ${^WARNING_BITS} = ...
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When restoring the old value, need to free the current value first.
Can be reproduced with
{
local ${^WARNING_BITS} = 'swit';
}
when run under ASan or similar.
An equivalent test already exists in t/op/leaky-magic.t.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
mg.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mg.c b/mg.c
index b022d63442..320e2d39bb 100644
--- a/mg.c
+++ b/mg.c
@@ -2916,6 +2916,8 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) {
if ( ! (PL_dowarn & G_WARN_ALL_MASK)) {
if (!SvPOK(sv)) {
+ if (!specialWARN(PL_compiling.cop_warnings))
+ PerlMemShared_free(PL_compiling.cop_warnings);
PL_compiling.cop_warnings = pWARN_STD;
break;
}
--
2.20.1

431
perl.spec
View File

@ -1,4 +1,4 @@
%global perl_version 5.28.2
%global perl_version 5.30.0
%global perl_epoch 4
%global perl_arch_stem -thread-multi
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
@ -83,7 +83,7 @@ License: GPL+ or Artistic
Epoch: %{perl_epoch}
Version: %{perl_version}
# release number must be even higher, because dual-lived modules will be broken otherwise
Release: 436%{?dist}
Release: 437%{?dist}
Summary: Practical Extraction and Report Language
Url: https://www.perl.org/
Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz
@ -133,148 +133,19 @@ Patch8: perl-5.16.3-create_libperl_soname.patch
# Install libperl.so to -Dshrpdir value
Patch9: perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch
# Document Math::BigInt::CalcEmu requires Math::BigInt, rhbz#959096,
# CPAN RT#85015
Patch10: perl-5.18.1-Document-Math-BigInt-CalcEmu-requires-Math-BigInt.patch
# Make *DBM_File desctructors thread-safe, bug #1107543, RT#61912
Patch11: perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch
Patch10: perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch
# Replace ExtUtils::MakeMaker dependency with ExtUtils::MM::Utils.
# This allows not to require perl-devel. Bug #1129443
Patch12: perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch
# Fix executing arybase::_tie_it() in Safe compartement, RT#131588,
# not yet accepted by upstream
Patch13: perl-5.26.0-perl-131588-be-a-little-more-careful-in-arybase-_tie.patch
Patch11: perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd.patch
# Link XS modules to pthread library to fix linking with -z defs,
# <https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/3RHZEHLRUHJFF2XGHI5RB6YPDNLDR4HG/>
Patch14: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch
# Fix printing a warning about a wide character when matching a regular
# expression while ISO-8859-1 locale is in effect, in upstream after 5.29.0
Patch17: perl-5.29.0-regexec.c-Call-macro-with-correct-args.patch
# Fix invoking a check for wide characters while ISO-8859-1 locale is in effect,
# in upstream after 5.29.0
Patch18: perl-5.29.0-perl.h-Add-parens-around-macro-arguments.patch
# Fix build conditions in locale.c, in upstream after 5.29.0
Patch20: perl-5.29.0-locale.c-Fix-conditional-compilation.patch
# Fix a file descriptor leak in in-place edits, RT#133314,
# in upstream after 5.29.1
Patch21: perl-5.29.1-perl-133314-test-for-handle-leaks-from-in-place-edit.patch
# Fix a buffer overrun in deprecated S_is_utf8_common(),
# in upstream after 5.29.1
Patch23: perl-5.29.1-utf8.c-Make-safer-a-deprecated-function.patch
# Fix a time race in Time-HiRes/t/itimer.t test, in upstream after 5.29.1
Patch24: perl-5.29.1-Time-HiRes-t-itimer.t-avoid-race-condition.patch
# Fix Time::Piece to handle objects in overloaded methods correctly,
# in upstream after 5.29.1
Patch26: perl-5.29.1-Update-Time-Piece-to-CPAN-version-1.33.patch
# Fix an assignment to a lexical variable in multiconcatenation expressions,
# RT#133441, in upstream after 5.29.2
Patch27: perl-5.29.2-multiconcat-mutator-not-seen-in-lex.patch
# Fix a spurious warning about uninitialized value in warn, RT#132683,
# in upstream after 5.29.2
Patch28: perl-5.29.2-perl-132683-don-t-try-to-convert-PL_sv_placeholder-i.patch
Patch12: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch
# Pass the correct CFLAGS to dtrace
Patch30: perl-5.28.0-Pass-CFLAGS-to-dtrace.patch
# Fix PathTools tests to cope with ESTALE error, RT#133534,
# in upstream after 5.29.3
Patch33: perl-5.29.3-Accept-also-ESTALE-fix-for-RT-133534.patch
# Fix an undefined behaviour in S_hv_delete_common(), in upstream after 5.29.5
Patch34: perl-5.29.5-S_hv_delete_common-avoid-undefined-behaviour.patch
# Fix compiling regular expressions that contain both compile- and run-time
# compiled code blocks, RT#133687, in upstream after 5.29.5
Patch38: perl-5.29.5-handle-code-mixed-compile-and-runtime.patch
# Adjust tests to gdbm-1.15, RT#133295, in upstream after 5.29.5
Patch39: perl-5.28.1-ext-GDBM_File-t-fatal.t-handle-non-fatality.patch
Patch40: perl-5.29.5-Correct-spelling-error-in-skip-message.patch
Patch41: perl-5.29.5-Avoid-Use-of-uninitialized-value-res-in-numeric-eq-w.patch
# Fix reporting a line number for non-terminated prototypes, RT#133524,
# in upstream after 5.29.6
Patch44: perl-5.28.1-perl-133524-report-line-number-for-Prototype-not-ter.patch
# Fix first eof() return value, RT#133721, in upstream after 5.29.6
Patch45: perl-5.29.6-perl-133721-TODO-test-for-eof-with-no-LAST_FH.patch
Patch46: perl-5.29.6-First-eof-should-return-true.patch
# Prevent long jumps from clobbering local variables, RT#133575,
# in upstream after 5.29.6
Patch49: perl-5.29.6-perl-133575-prevent-set-longjmp-clobbering-locals-in.patch
# Fix a mismatch with a case-insesitive regular expression on a text with
# ligatures, RT#133756, in upstream after 5.29.6
Patch50: perl-5.29.6-PATCH-perl-133756-Failure-to-match-properly.patch
# Fix setting magic when changing $^R, RT#133782, in upstream after 5.29.7
Patch53: perl-5.28.1-perl-133782-set-magic-when-changing-R.patch
# Fix a race when loading XS modules, in upstream after 5.29.7
Patch54: perl-5.29.7-Perl_my_cxt_init-fix-potential-race-condition.patch
# Fix a leak when compiling a typed hash dereference, in upstream after 5.29.8
Patch56: perl-5.28.1-fix-leak-when-compiling-typed-hash-deref.patch
Patch57: perl-5.29.8-fix-blead-on-non-threaded-builds.patch
# Fix a buffer overread when handling a scope error in qr/\(?{/, RT#133879,
# in upstream after 5.29.8
Patch58: perl-5.29.8-handle-scope-error-in-qr.patch
# Fix a buffer overread when parsing a regular expression with an unknown
# character name, RT#133880, in upstream after 5.29.9
Patch59: perl-5.28.1-PATCH-perl-133880-assertion-failure.patch
# Fix mbstate_t initialization in POSIX::mblen, RT#133928,
# in upstream after 5.29.9
Patch60: perl-5.28.1-Fix-POSIX-mblen-mbstate_t-initialization-on-threaded.patch
# Fix a memory leak when cloning a regular expression, in upstream after 5.29.9
Patch61: perl-5.29.9-fix-leak-in-cloned-regexes.patch
# Fix a memory leak when spawning threads in a BEGIN phase,
# in upstream after 5.29.9
Patch62: perl-5.29.9-fix-leak-in-BEGIN-threads-new.patch
# Fix a memory leak when assigning a regular expression to a non-copy-on-write
# string, in upstream after 5.29.9
Patch63: perl-5.29.9-avoid-leak-assigning-regexp-to-non-COW-string.patch
# Fix a memory leak when assignig to a localized ${^WARNING_BITS},
# in upstream after 5.29.9
Patch64: perl-5.29.9-fix-leak-with-local-WARNING_BITS.patch
# Fix a memory leak when parsing misindented here-documents,
# in upstream after 5.29.9
Patch65: perl-5.28.1-fix-a-leak-with-indented-heredocs.patch
# Fix a memory leak in package name lookup, RT#133977, in upstream after 5.29.9
Patch66: perl-5.29.9-fix-leak-in-package-name-lookup.patch
Patch67: perl-5.29.9-Fix-recent-double-free-in-S_parse_gv_stash_name.patch
# Fix a memory leak when deletion in a tied hash dies, in upstream after 5.29.9
Patch68: perl-5.29.9-avoid-leak-with-local-h-foo-a-n.patch
# Fix a crash when matching case insensitively, RT#133892,
# in upstream after 5.29.9
Patch69: perl-5.28.1-perl-133892-coredump-in-Perl_re_intuit_start.patch
# Fix a memory leak when warning about malformed UTF-8 string
Patch70: perl-5.29.9-fix-leak-in-Perl__force_out_malformed_utf8_message.patch
Patch13: perl-5.28.0-Pass-CFLAGS-to-dtrace.patch
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
@ -329,7 +200,7 @@ BuildRequires: rsyslog
# compat macro needed for rebuild
%global perl_compat perl(:MODULE_COMPAT_5.28.2)
%global perl_compat perl(:MODULE_COMPAT_5.30.0)
Requires: %perl_compat
Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release}
@ -342,7 +213,7 @@ Requires: perl-utils
%endif
Requires: perl-Archive-Tar, perl-Attribute-Handlers, perl-autodie,
Requires: perl-B-Debug, perl-bignum
Requires: perl-bignum
Requires: perl-Compress-Raw-Bzip2,
Requires: perl-Carp, perl-Compress-Raw-Zlib, perl-Config-Perl-V,
Requires: perl-constant,
@ -365,7 +236,7 @@ Requires: perl-HTTP-Tiny,
Requires: perl-IO, perl-IO-Compress, perl-IO-Socket-IP
Requires: perl-IO-Zlib, perl-IPC-Cmd, perl-IPC-SysV, perl-JSON-PP
Requires: perl-libnet, perl-libnetcfg,
Requires: perl-Locale-Codes, perl-Locale-Maketext,
Requires: perl-Locale-Maketext,
Requires: perl-Locale-Maketext-Simple
Requires: perl-Math-BigInt, perl-Math-BigInt-FastCalc, perl-Math-BigRat,
Requires: perl-Math-Complex, perl-Memoize,
@ -481,8 +352,6 @@ Summary: The libraries for the perl run-time
License: (GPL+ or Artistic) and HSRL and MIT and UCD
# Compat provides
Provides: %perl_compat
Provides: perl(:MODULE_COMPAT_5.28.1)
Provides: perl(:MODULE_COMPAT_5.28.0)
# Interpreter version to fulfil required genersted from "require 5.006;"
Provides: perl(:VERSION) = %{perl_version}
# Integeres are 64-bit on all platforms
@ -604,7 +473,7 @@ packages like perldoc by perl-Pod-Perldoc.
Summary: A module for Perl manipulation of .tar files
License: GPL+ or Artistic
Epoch: 0
Version: 2.30
Version: 2.32
BuildArch: noarch
Requires: %perl_compat
Requires: perl(IO::Zlib) >= 1.01
@ -675,27 +544,11 @@ autodie in preference to "Fatal".
%endif
%if %{dual_life} || %{rebuild_from_scratch}
%package B-Debug
Summary: Walk Perl syntax tree, print debug information about op-codes
License: GPL+ or Artistic
Epoch: 0
Version: 1.26
Requires: %perl_compat
BuildArch: noarch
%if %{defined perl_bootstrap}
%gendep_perl_B_Debug
%endif
Conflicts: perl < 4:5.20.1-310
%description B-Debug
Walk Perl syntax tree and print debug information about op-codes. See
B::Concise and B::Terse for other details.
%package bignum
Summary: Transparent big number support for Perl
License: GPL+ or Artistic
Epoch: 0
Version: 0.49
Version: 0.51
Requires: %perl_compat
Requires: perl(Carp)
# Math::BigInt::Lite is optional
@ -742,7 +595,7 @@ but it is a good educated guess.
Summary: Low-Level Interface to bzip2 compression library
License: GPL+ or Artistic
Epoch: 0
Version: 2.074
Version: 2.084
Requires: perl(Exporter), perl(File::Temp)
%if %{defined perl_bootstrap}
%gendep_perl_Compress_Raw_Bzip2
@ -756,7 +609,7 @@ It is used by IO::Compress::Bzip2.
Summary: Low-Level Interface to the zlib compression library
License: (GPL+ or Artistic) and zlib
Epoch: 0
Version: 2.076
Version: 2.084
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Compress_Raw_Zlib
@ -772,7 +625,7 @@ It is used by IO::Compress::Zlib.
Summary: Structured data retrieval of perl -V output
License: GPL+ or Artistic
Epoch: 0
Version: 0.29
Version: 0.32
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Config_Perl_V
@ -824,7 +677,7 @@ away if the constant is false.
Summary: Query, download and build perl modules from CPAN sites
License: GPL+ or Artistic
Epoch: 0
Version: 2.20
Version: 2.22
Requires: make
# Prefer Archive::Tar and Compress::Zlib over tar and gzip
Requires: perl(Archive::Tar) >= 1.50
@ -953,7 +806,7 @@ used for any other general YAML parsing or generation task.
Summary: Stringify perl data structures, suitable for printing and eval
License: GPL+ or Artistic
Epoch: 0
Version: 2.170
Version: 2.174
Requires: %perl_compat
Requires: perl(Scalar::Util)
Requires: perl(XSLoader)
@ -973,7 +826,7 @@ structures correctly.
Summary: Perl5 access to Berkeley DB version 1.x
License: GPL+ or Artistic
Epoch: 0
Version: 1.840
Version: 1.843
Requires: %perl_compat
Requires: perl(Fcntl)
Requires: perl(XSLoader)
@ -993,7 +846,7 @@ interface defined here mirrors the Berkeley DB interface closely.
Summary: A data debugging tool for the XS programmer
License: GPL+ or Artistic
Epoch: 0
Version: 1.27
Version: 1.28
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Devel_Peek
@ -1011,7 +864,7 @@ should look.
Summary: Perl Pollution Portability header generator
License: GPL+ or Artistic
Epoch: 0
Version: 3.40
Version: 3.52
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Devel_PPPort
@ -1095,7 +948,7 @@ Summary: Perl extension for SHA-1/224/256/384/512
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 1
Version: 6.01
Version: 6.02
Requires: %perl_compat
Requires: perl(Carp)
# Recommended
@ -1116,7 +969,7 @@ module can handle all types of input, including partial-byte data.
Summary: Character encodings in Perl
License: (GPL+ or Artistic) and Artistic 2.0 and UCD
Epoch: 4
Version: 2.97
Version: 3.01
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Encode
@ -1162,7 +1015,7 @@ The easiest and the best alternative is to write your script in UTF-8.
Summary: Character encodings in Perl
License: (GPL+ or Artistic) and UCD
Epoch: 4
Version: 2.97
Version: 3.01
Requires: %perl_compat
Requires: %{name}-Encode = %{epoch}:%{version}-%{release}
Recommends: perl-devel
@ -1200,7 +1053,7 @@ variables to be treated as scalar or array variables.
Summary: System errno constants
License: GPL+ or Artistic
Epoch: 0
Version: 1.29
Version: 1.30
Requires: %perl_compat
# Errno.pm bakes in kernel version at build time and compares it against
# $Config{osvers} at run time. Match exact interpreter build. Bug #1393421.
@ -1221,7 +1074,7 @@ which will export all POSIX defined error numbers.
Summary: Experimental features made easy
License: GPL+ or Artistic
Epoch: 0
Version: 0.019
Version: 0.020
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_experimental
@ -1262,7 +1115,7 @@ Summary: Compile and link C code for Perl modules
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 1
Version: 0.280230
Version: 0.280231
BuildArch: noarch
# C and C++ compilers are highly recommended because compiling code is the
# purpose of ExtUtils::CBuilder, bug #1547165
@ -1342,7 +1195,7 @@ pages, etc.
%package ExtUtils-MakeMaker
Summary: Create a module Makefile
License: GPL+ or Artistic
Epoch: 1
Epoch: 2
Version: 7.34
# These dependencies are weak in order to relieve building noarch
# packages from perl-devel and gcc. See bug #1547165.
@ -1385,7 +1238,7 @@ Create a module Makefile.
Summary: Utilities to write and check a MANIFEST file
License: GPL+ or Artistic
Epoch: 1
Version: 1.70
Version: 1.72
Requires: %perl_compat
Requires: perl(File::Path)
%if %{defined perl_bootstrap}
@ -1401,7 +1254,7 @@ BuildArch: noarch
Summary: Write the C code for perlmain.c
License: GPL+ or Artistic
Epoch: 0
Version: 1.08
Version: 1.09
Requires: perl-devel
Requires: %perl_compat
%if %{defined perl_bootstrap}
@ -1445,7 +1298,7 @@ Summary: Module and a script for converting Perl XS code into C code
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 1
Version: 3.39
Version: 3.40
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_ExtUtils_ParseXS
@ -1483,7 +1336,7 @@ File::Fetch is a generic file fetching mechanism.
Summary: Create or remove directory trees
License: GPL+ or Artistic
Epoch: 0
Version: 2.15
Version: 2.16
Requires: %perl_compat
Requires: perl(Carp)
%if %{defined perl_bootstrap}
@ -1503,7 +1356,7 @@ Summary: Return name and handle of a temporary file safely
License: GPL+ or Artistic
Epoch: 1
# Normalized version
Version: 0.230.400
Version: 0.230.900
Requires: %perl_compat
BuildArch: noarch
Requires: perl(File::Path) >= 2.06
@ -1527,7 +1380,7 @@ can be used to create a temporary directory.
Summary: Perl source filters
License: GPL+ or Artistic
Epoch: 2
Version: 1.58
Version: 1.59
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Filter
@ -1591,7 +1444,7 @@ enabled by default.
Summary: Perl input/output modules
License: GPL+ or Artistic
Epoch: 0
Version: 1.39
Version: 1.40
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_IO
@ -1606,7 +1459,7 @@ This is a collection of Perl input/output modules.
Summary: IO::Compress wrapper for modules
License: GPL+ or Artistic
Epoch: 0
Version: 2.074
Version: 2.084
Requires: %perl_compat
Obsoletes: perl-Compress-Zlib <= 2.020
Provides: perl(IO::Uncompress::Bunzip2)
@ -1666,7 +1519,7 @@ Summary: Finding and running system commands made easy
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 2
Version: 1.00
Version: 1.02
Requires: perl(ExtUtils::MM::Utils)
Requires: %perl_compat
%if %{defined perl_bootstrap}
@ -1702,7 +1555,7 @@ inter-process calls.
Summary: A small, simple, correct HTTP/1.1 client
License: GPL+ or Artistic
Epoch: 0
Version: 0.070
Version: 0.076
Requires: perl(bytes)
Requires: perl(Carp)
Requires: perl(IO::Socket)
@ -1724,8 +1577,7 @@ resumes after EINTR.
%package JSON-PP
Summary: JSON::XS compatible pure-Perl module
Epoch: 1
# Real version 2.97001
Version: 2.97.001
Version: 4.02
License: GPL+ or Artistic
BuildArch: noarch
Requires: %perl_compat
@ -1787,33 +1639,6 @@ Conflicts: perl-devel < 4:5.22.0-347
%description libnetcfg
The libnetcfg utility can be used to configure the libnet.
%if %{dual_life} || %{rebuild_from_scratch}
%package Locale-Codes
Summary: Distribution of modules to handle locale codes
Epoch: 0
Version: 3.25
License: GPL+ or Artistic
Requires: %perl_compat
Requires: perl(constant)
Provides: perl(Locale::Codes) = %{version}
%if %{defined perl_bootstrap}
%gendep_perl_Locale_Codes
%endif
BuildArch: noarch
# Do not export unversioned module
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(Locale::Codes\\)\\s*$
# Filter dependencies on private modules. Generator:
# for F in $(find lib -type f); do perl -e '$/ = undef; $_ = <>; if (/^package #\R([\w:]*);/m) { print qq{|^perl\\\\($1\\\\)} }' "$F"; done
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Locale::Codes::Country_Retired\\)|^perl\\(Locale::Codes::LangFam_Retired\\)|^perl\\(Locale::Codes::Script_Retired\\)|^perl\\(Locale::Codes::LangExt_Codes\\)|^perl\\(Locale::Codes::LangFam_Codes\\)|^perl\\(Locale::Codes::Script_Codes\\)|^perl\\(Locale::Codes::Language_Codes\\)|^perl\\(Locale::Codes::LangExt_Retired\\)|^perl\\(Locale::Codes::Currency_Codes\\)|^perl\\(Locale::Codes::LangVar_Retired\\)|^perl\\(Locale::Codes::Language_Retired\\)|^perl\\(Locale::Codes::Country_Codes\\)|^perl\\(Locale::Codes::LangVar_Codes\\)|^perl\\(Locale::Codes::Currency_Retired\\)
%description Locale-Codes
Locale-Codes is a distribution containing a set of modules. The modules
each deal with different types of codes which identify parts of the locale
including languages, countries, currency, etc.
%endif
%if %{dual_life} || %{rebuild_from_scratch}
%package Locale-Maketext
Summary: Framework for localization
@ -1858,8 +1683,8 @@ to alleviate the need of creating Language Classes for module authors.
Summary: Arbitrary-size integer and float mathematics
License: GPL+ or Artistic
Epoch: 1
# Real version 1.999811
Version: 1.9998.11
# Real version 1.999816
Version: 1.9998.16
Requires: %perl_compat
Requires: perl(Carp)
# File::Spec not used on recent perl
@ -1880,8 +1705,8 @@ Summary: Math::BigInt::Calc XS implementation
License: GPL+ or Artistic
Epoch: 0
# Version normalized to dot format
# Real version 0.5006
Version: 0.500.600
# Real version 0.5008
Version: 0.500.800
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Math_BigInt_FastCalc
@ -1895,8 +1720,8 @@ This package provides support for faster big integer calculations.
Summary: Arbitrary big rational numbers
License: GPL+ or Artistic
Epoch: 0
# Real version 0.2613
Version: 0.2613
# Real version 0.2614
Version: 0.2614
Requires: %perl_compat
Requires: perl(Math::BigInt)
%if %{defined perl_bootstrap}
@ -1973,7 +1798,7 @@ encoder/decoder. These encoding methods are specified in RFC 2045 - MIME
Summary: What modules are shipped with versions of perl
License: GPL+ or Artistic
Epoch: 1
Version: 5.20190419
Version: 5.20190522
Requires: %perl_compat
Requires: perl(List::Util)
Requires: perl(version) >= 0.88
@ -1991,7 +1816,7 @@ are shipped with each version of perl.
Summary: Tool for listing modules shipped with perl
License: GPL+ or Artistic
Epoch: 1
Version: 5.20190419
Version: 5.20190522
Requires: %perl_compat
Requires: perl(feature)
Requires: perl(version) >= 0.88
@ -2016,7 +1841,7 @@ Summary: Runtime require of both modules and files
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 1
Version: 0.32
Version: 0.34
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Module_Load
@ -2071,7 +1896,7 @@ offers you a very simple way to mark modules as loaded and/or unloaded.
%package Module-Metadata
Summary: Gather package and POD information from perl module files
Epoch: 0
Version: 1.000033
Version: 1.000036
License: GPL+ or Artistic
BuildArch: noarch
Requires: %perl_compat
@ -2087,7 +1912,7 @@ Gather package and POD information from perl module files
Summary: Check a remote host for reachability
License: GPL+ or Artistic
Epoch: 0
Version: 2.62
Version: 2.71
Requires: %perl_compat
# Keep Net::Ping::External optional
%if %{defined perl_bootstrap}
@ -2125,7 +1950,7 @@ Summary: Establish an ISA relationship with base classes at compile time
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 1
Version: 0.236
Version: 0.237
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_parent
@ -2168,7 +1993,7 @@ Params::Check is a generic input parsing/checking mechanism.
Summary: PathTools Perl module (Cwd, File::Spec)
License: (GPL+ or Artistic) and BSD
Epoch: 0
Version: 3.74
Version: 3.78
Requires: %perl_compat
Requires: perl(Carp)
%if %{defined perl_bootstrap}
@ -2185,7 +2010,7 @@ Summary: Frequently asked questions about Perl
# Code examples are Public Domain
License: (GPL+ or Artistic) and Public Domain
Epoch: 0
Version: 5.021011
Version: 5.20190126
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_perlfaq
@ -2394,7 +2219,7 @@ verbose level is 2, then the entire manual page is printed.
Summary: Format POD source into various output formats
License: (GPL+ or Artistic) and MIT
Epoch: 1
Version: 4.10
Version: 4.11
BuildArch: noarch
Requires: %perl_compat
Requires: perl(File::Spec) >= 0.8
@ -2471,7 +2296,7 @@ includes all of the commonly used pound-defines like AF_INET, SOCK_STREAM, etc.
Summary: Persistence for Perl data structures
License: GPL+ or Artistic
Epoch: 1
Version: 3.08
Version: 3.15
Requires: %perl_compat
# Carp substitutes missing Log::Agent
Requires: perl(Carp)
@ -2589,8 +2414,8 @@ Use TAP::Parser, Test::Harness package was whole rewritten.
%package Test-Simple
Summary: Basic utilities for writing tests
License: (GPL+ or Artistic) and CC0 and Public Domain
Epoch: 2
Version: 1.302133
Epoch: 3
Version: 1.302162
Requires: %perl_compat
Requires: perl(Data::Dumper)
%if %{defined perl_bootstrap}
@ -2664,7 +2489,7 @@ up long lines, it will not join short lines together.
Summary: Thread-safe queues
License: GPL+ or Artistic
Epoch: 0
Version: 3.12
Version: 3.13
Requires: %perl_compat
Requires: perl(Carp)
%if %{defined perl_bootstrap}
@ -2683,7 +2508,7 @@ any number of threads.
Summary: High resolution alarm, sleep, gettimeofday, interval timers
License: GPL+ or Artistic
Epoch: 0
Version: 1.9759
Version: 1.9760
Requires: %perl_compat
Requires: perl(Carp)
%if %{defined perl_bootstrap}
@ -2702,8 +2527,8 @@ high resolution time and timers.
Summary: Efficiently compute time from local and GMT time
License: GPL+ or Artistic
Epoch: 2
# Real version 1.25
Version: 1.250
# Real version 1.28
Version: 1.280
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_Time_Local
@ -2765,7 +2590,7 @@ variables, you need to also load threads::shared.
Summary: Perl extension for sharing data structures between threads
License: GPL+ or Artistic
Epoch: 0
Version: 1.58
Version: 1.60
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_threads_shared
@ -2785,7 +2610,7 @@ hashes and hash refs.
Summary: Unicode Collation Algorithm
License: (GPL+ or Artistic) and Unicode
Epoch: 0
Version: 1.25
Version: 1.27
Requires: %perl_compat
Requires: perl(Unicode::Normalize)
%if %{defined perl_bootstrap}
@ -2823,8 +2648,8 @@ Summary: Perl extension for Version Objects
License: GPL+ or Artistic
# Epoch bump for clean upgrade over old standalone package
Epoch: 7
# real version 0.9923
Version: 0.99.23
# real version 0.9924
Version: 0.99.24
Requires: %perl_compat
%if %{defined perl_bootstrap}
%gendep_perl_version
@ -2852,45 +2677,6 @@ Perl extension for Version Objects
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch17 -p1
%patch18 -p1
%patch20 -p1
%patch21 -p1
%patch23 -p1
%patch24 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch30 -p1
%patch33 -p1
%patch34 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch41 -p1
%patch44 -p1
%patch45 -p1
%patch46 -p1
%patch49 -p1
%patch50 -p1
%patch53 -p1
%patch54 -p1
%patch56 -p1
%patch57 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
%patch67 -p1
%patch68 -p1
%patch69 -p1
%patch70 -p1
%patch200 -p1
%patch201 -p1
@ -2907,44 +2693,10 @@ perl -x patchlevel.h \
'Fedora Patch6: Dont run one io test due to random builder failures' \
'Fedora Patch8: Define SONAME for libperl.so' \
'Fedora Patch9: Install libperl.so to -Dshrpdir value' \
'Fedora Patch10: Document Math::BigInt::CalcEmu requires Math::BigInt (CPAN RT#85015)' \
'Fedora Patch11: Make *DBM_File desctructors thread-safe (RT#61912)' \
'Fedora Patch12: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)' \
'Fedora Patch13: Fix executing arybase::_tie_it() in Safe compartement (RT#131588)' \
'Fedora Patch14: Link XS modules to pthread library to fix linking with -z defs' \
'Fedora Patch17: Fix printing a warning about a wide character when matching a regular expression while ISO-8859-1 locale is in effect' \
'Fedora Patch18: Fix invoking a check for wide characters while ISO-8859-1 locale is in effect' \
'Fedora Patch20: Fix build conditions in locale.c' \
'Fedora Patch21: Fix a file descriptor leak in in-place edits (RT#133314)' \
'Fedora Patch23: Fix a buffer overrun in deprecated S_is_utf8_common()' \
'Fedora Patch24: Fix a time race in Time-HiRes/t/itimer.t test' \
'Fedora Patch26: Fix Time::Piece to handle objects in overloaded methods correctly' \
'Fedora Patch27: Fix an assignment to a lexical variable in multiconcatenation expressions (RT#133441)' \
'Fedora Patch28: Fix a spurious warning about uninitialized value in warn (RT#132683)' \
'Fedora Patch30: Pass the correct CFLAGS to dtrace' \
'Fedora Patch33: Fix PathTools tests to cope with ESTALE error (RT#133534)' \
'Fedora Patch34: Fix an undefined behaviour in S_hv_delete_common()' \
'Fedora Patch38: Fix compiling regular expressions that contain both compile- and run-time compiled code blocks (RT#133687)' \
'Fedora Patch39: Adjust tests to gdbm-1.15 (RT#133295)' \
'Fedora Patch44: Fix reporting a line number for non-terminated prototypes (RT#133524)' \
'Fedora Patch45: Fix first eof() return value (RT#133721)' \
'Fedora Patch49: Prevent long jumps from clobbering local variables (RT#133575)' \
'Fedora Patch50: Fix a mismatch with a case-insesitive regular expression on a text with ligatures (RT#133756)' \
'Fedora Patch53: Fix setting magic when changing $^R (RT#133782)' \
'Fedora Patch54: Fix a race when loading XS modules' \
'Fedora Patch56: Fix a leak when compiling a typed hash dereference' \
'Fedora Patch58: Fix a buffer overread when handling a scope error in qr/\(?{/ (RT#133879)' \
'Fedora Patch59: Fix a buffer overread when parsing a regular expression with an unknown character name (RT#133880)' \
'Fedora Patch60: Fix mbstate_t initialization in POSIX::mblen (RT#133928)' \
'Fedora Patch61: Fix a memory leak when cloning a regular expression' \
'Fedora Patch62: Fix a memory leak when spawning threads in a BEGIN phase' \
'Fedora Patch63: Fix a memory leak when assigning a regular expression to a non-copy-on-write string' \
'Fedora Patch64: Fix a memory leak when assignig to a localized ${^WARNING_BITS}' \
'Fedora Patch65: Fix a memory leak when parsing misindented here-documents' \
'Fedora Patch66: Fix a memory leak in package name lookup (RT#133977)' \
'Fedora Patch68: Fix a memory leak when deletion in a tied hash dies' \
'Fedora Patch69: Fix a crash when matching case insensitively (RT#133892)' \
'Fedora Patch70: Fix a memory leak when warning about malformed UTF-8 string' \
'Fedora Patch10: Make *DBM_File desctructors thread-safe (RT#61912)' \
'Fedora Patch11: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)' \
'Fedora Patch12: Link XS modules to pthread library to fix linking with -z defs' \
'Fedora Patch13: Pass the correct CFLAGS to dtrace' \
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
%{nil}
@ -3326,10 +3078,6 @@ popd
%exclude %{_mandir}/man3/autodie::*
%exclude %{_mandir}/man3/Fatal.3*
# B-Debug
%exclude %{privlib}/B/Debug.pm
%exclude %{_mandir}/man3/B::Debug.3*
# bignum
%exclude %{privlib}/bigint.pm
%exclude %{privlib}/bignum.pm
@ -3771,21 +3519,6 @@ popd
%exclude %{_bindir}/libnetcfg
%exclude %{_mandir}/man1/libnetcfg*
# Locale-Codes
%exclude %dir %{privlib}/Locale
%exclude %{privlib}/Locale/Codes
%exclude %{privlib}/Locale/Codes.*
%exclude %{privlib}/Locale/Country.*
%exclude %{privlib}/Locale/Currency.*
%exclude %{privlib}/Locale/Language.*
%exclude %{privlib}/Locale/Script.*
%exclude %{_mandir}/man3/Locale::Codes::*
%exclude %{_mandir}/man3/Locale::Codes.*
%exclude %{_mandir}/man3/Locale::Country.*
%exclude %{_mandir}/man3/Locale::Currency.*
%exclude %{_mandir}/man3/Locale::Language.*
%exclude %{_mandir}/man3/Locale::Script.*
# Locale-Maketext
%exclude %dir %{privlib}/Locale
%exclude %dir %{privlib}/Locale/Maketext
@ -3811,12 +3544,10 @@ popd
%exclude %{privlib}/Math/BigInt.pm
%exclude %dir %exclude %{privlib}/Math/BigInt
%exclude %{privlib}/Math/BigInt/Calc.pm
%exclude %{privlib}/Math/BigInt/CalcEmu.pm
%exclude %{privlib}/Math/BigInt/Lib.pm
%exclude %{_mandir}/man3/Math::BigFloat.*
%exclude %{_mandir}/man3/Math::BigInt.*
%exclude %{_mandir}/man3/Math::BigInt::Calc.*
%exclude %{_mandir}/man3/Math::BigInt::CalcEmu.*
%exclude %{_mandir}/man3/Math::BigInt::Lib.*
# Math-BigInt-FastCalc
@ -4220,11 +3951,6 @@ popd
%endif
%if %{dual_life} || %{rebuild_from_scratch}
%files B-Debug
%dir %{privlib}/B
%{privlib}/B/Debug.pm
%{_mandir}/man3/B::Debug.3*
%files bignum
%{privlib}/bigint.pm
%{privlib}/bignum.pm
@ -4768,23 +4494,6 @@ popd
%{_bindir}/libnetcfg
%{_mandir}/man1/libnetcfg*
%if %{dual_life} || %{rebuild_from_scratch}
%files Locale-Codes
%dir %{privlib}/Locale
%{privlib}/Locale/Codes
%{privlib}/Locale/Codes.*
%{privlib}/Locale/Country.*
%{privlib}/Locale/Currency.*
%{privlib}/Locale/Language.*
%{privlib}/Locale/Script.*
%{_mandir}/man3/Locale::Codes::*
%{_mandir}/man3/Locale::Codes.*
%{_mandir}/man3/Locale::Country.*
%{_mandir}/man3/Locale::Currency.*
%{_mandir}/man3/Locale::Language.*
%{_mandir}/man3/Locale::Script.*
%endif
%if %{dual_life} || %{rebuild_from_scratch}
%files Locale-Maketext
%dir %{privlib}/Locale
@ -4814,12 +4523,10 @@ popd
%{privlib}/Math/BigInt.pm
%dir %{privlib}/Math/BigInt
%{privlib}/Math/BigInt/Calc.pm
%{privlib}/Math/BigInt/CalcEmu.pm
%{privlib}/Math/BigInt/Lib.pm
%{_mandir}/man3/Math::BigFloat.*
%{_mandir}/man3/Math::BigInt.*
%{_mandir}/man3/Math::BigInt::Calc.*
%{_mandir}/man3/Math::BigInt::CalcEmu.*
%{_mandir}/man3/Math::BigInt::Lib.*
%files Math-BigInt-FastCalc
@ -5233,6 +4940,10 @@ popd
# Old changelog entries are preserved in CVS.
%changelog
* Wed May 22 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.30.0-437
- 5.30.0 bump (see <https://metacpan.org/pod/release/XSAWYERX/perl-5.30.0/pod/perldelta.pod>
for release notes)
* Tue Apr 23 2019 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.28.2-436
- 5.28.2 bump (see <https://metacpan.org/pod/release/SHAY/perl-5.28.2/pod/perldelta.pod>
for release notes)

View File

@ -1 +1 @@
SHA512 (perl-5.28.2.tar.xz) = 0f2e4f7cb5d8cf6e00054b3842907e29b6c85902d97fb881d5bea65edbc875fef4e15e064561fac7c8db4939586576dd76a225026c7cca9624261c887b1fdb08
SHA512 (perl-5.30.0.tar.xz) = 68a295eccd64debd9d6a10f0d5577f872a19ad8c2d702798f6b0f45b8c3af6ab3230768056e2131e9e2e2506d1035b27cfd627c845e32263fe448649c4b98ae9