Upgrade to 5.30.0
This commit is contained in:
parent
51b53cd3f9
commit
ffbaa94ebd
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
552
gendep.macros
552
gendep.macros
@ -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}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
431
perl.spec
@ -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)
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (perl-5.28.2.tar.xz) = 0f2e4f7cb5d8cf6e00054b3842907e29b6c85902d97fb881d5bea65edbc875fef4e15e064561fac7c8db4939586576dd76a225026c7cca9624261c887b1fdb08
|
||||
SHA512 (perl-5.30.0.tar.xz) = 68a295eccd64debd9d6a10f0d5577f872a19ad8c2d702798f6b0f45b8c3af6ab3230768056e2131e9e2e2506d1035b27cfd627c845e32263fe448649c4b98ae9
|
||||
|
Loading…
Reference in New Issue
Block a user