[perl/f20] Resolves: BZ#978233, BZ#989486, BZ#970567, BZ#988805, BZ#982131
Jitka Plesnikova
jplesnik at fedoraproject.org
Wed Sep 11 12:58:13 UTC 2013
commit 0de8d4ee701c8bc1bbf55a3b5649adeb0e494366
Author: Jitka Plesnikova <jplesnik at redhat.com>
Date: Wed Sep 11 14:48:59 2013 +0200
Resolves: BZ#978233, BZ#989486, BZ#970567, BZ#988805, BZ#982131
perl-5.19.2-Fix-coreamp.t-s-rand-test.patch | 31 ++++
perl-5.19.2-Fix-crash-with-glob_copy.patch | 96 ++++++++++
...es-for-parsing-numeric-escapes-in-regexes.patch | 184 ++++++++++++++++++++
...x-using-regexes-with-multiple-code-blocks.patch | 68 +++++++
...d-in-case-where-exception-has-been-thrown.patch | 69 ++++++++
perl.spec | 38 ++++-
6 files changed, 485 insertions(+), 1 deletions(-)
---
diff --git a/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch b/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch
new file mode 100644
index 0000000..5b4e027
--- /dev/null
+++ b/perl-5.19.2-Fix-coreamp.t-s-rand-test.patch
@@ -0,0 +1,31 @@
+From fba93b250c0d566f7ef26442312286310b2b9b46 Mon Sep 17 00:00:00 2001
+From: Father Chrysostomos <sprout at cpan.org>
+Date: Sun, 2 Jun 2013 00:36:33 -0700
+Subject: [PATCH] =?UTF-8?q?[perl=20#118237]=20Fix=20coreamp.t=E2=80=99s=20?=
+ =?UTF-8?q?rand=20test?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+when rand returns something really small that does not
+begin with 0, such as 2.90736361456823e-05.
+---
+ t/op/coreamp.t | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/t/op/coreamp.t b/t/op/coreamp.t
+index c1f7181..fe7c741 100644
+--- a/t/op/coreamp.t
++++ b/t/op/coreamp.t
+@@ -637,7 +637,7 @@ test_proto 'quotemeta', '$', '\$';
+
+ test_proto 'rand';
+ $tests += 3;
+-like &CORE::rand, qr/^0[.\d+-e]*\z/, '&rand';
++like &CORE::rand, qr/^[.\d+-e]*\z/, '&rand';
+ unlike join(" ", &CORE::rand), qr/ /, '&rand in list context';
+ &cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 1 arg');
+
+--
+1.8.3.1
+
diff --git a/perl-5.19.2-Fix-crash-with-glob_copy.patch b/perl-5.19.2-Fix-crash-with-glob_copy.patch
new file mode 100644
index 0000000..6623f74
--- /dev/null
+++ b/perl-5.19.2-Fix-crash-with-glob_copy.patch
@@ -0,0 +1,96 @@
+From 2f222bbdd2d6da605708c3ab620ac25c62481179 Mon Sep 17 00:00:00 2001
+From: Father Chrysostomos <sprout at cpan.org>
+Date: Sun, 28 Jul 2013 12:35:47 -0700
+Subject: [PATCH] [perl #119051] Fix crash with \&$glob_copy
+
+$ref = *Foo::nosub;
+\&$ref;
+
+The assignment creates a glob copy (coercible glob; one that down-
+grades back to a simple scalar when assigned to).
+
+\&$ref autovivifies a stub in that glob. The CvGV pointer ends up
+pointing to $ref, rather than *Foo::nosub. $ref can easily cease
+being a glob. So crashes happen.
+
+Stub autovivification used to stringify the glob, look it up again by
+name, and then vivify the stub in the glob.
+
+In commit 186a5ba82d584 I removed what seemed like a waste of CPU
+cycles, but apparently it served some purpose. The lookup caused CvGV
+to point to *Foo::nosub, rather than $x.
+
+This commit restores the stringfy-and-lookup if the glob is coercible
+(SvFAKE). It goes a little further and turns off the SvFAKE flag if
+the glob just looked up is also FAKE.
+
+It turns out this bug is old, and has been triggerable via glob copies
+in stash elements for a long time. 186a5ba82d584 made it easier to
+trigger the bug (so it is a regression from 5.16).
+---
+ op.c | 8 +++++++-
+ t/op/gv.t | 16 +++++++++++++++-
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/op.c b/op.c
+index e308d08..7576509 100644
+--- a/op.c
++++ b/op.c
+@@ -7918,13 +7918,19 @@ CV *
+ Perl_newSTUB(pTHX_ GV *gv, bool fake)
+ {
+ CV *cv = MUTABLE_CV(newSV_type(SVt_PVCV));
++ GV *cvgv;
+ PERL_ARGS_ASSERT_NEWSTUB;
+ assert(!GvCVu(gv));
+ GvCV_set(gv, cv);
+ GvCVGEN(gv) = 0;
+ if (!fake && HvENAME_HEK(GvSTASH(gv)))
+ gv_method_changed(gv);
+- CvGV_set(cv, gv);
++ if (SvFAKE(gv)) {
++ cvgv = gv_fetchsv((SV *)gv, GV_ADDMULTI, SVt_PVCV);
++ SvFAKE_off(cvgv);
++ }
++ else cvgv = gv;
++ CvGV_set(cv, cvgv);
+ CvFILE_set_from_cop(cv, PL_curcop);
+ CvSTASH_set(cv, PL_curstash);
+ GvMULTI_on(gv);
+diff --git a/t/op/gv.t b/t/op/gv.t
+index deb92f3..806a68a 100644
+--- a/t/op/gv.t
++++ b/t/op/gv.t
+@@ -12,7 +12,7 @@ BEGIN {
+
+ use warnings;
+
+-plan( tests => 245 );
++plan( tests => 247 );
+
+ # type coercion on assignment
+ $foo = 'foo';
+@@ -959,6 +959,20 @@ package lrcg {
+ $::{aoeuaoeuaoeaoeu} = __PACKAGE__; # cow
+ () = *{"aoeuaoeuaoeaoeu"};
+
++$x = *_119051;
++$y = \&$x;
++undef $x;
++eval { &$y };
++pass "No crash due to CvGV(vivified stub) pointing to flattened glob copy";
++# Not really supported, but this should not crash either:
++$x = *_119051again;
++delete $::{_119051again};
++$::{_119051again} = $x; # now we have a fake glob under the right name
++$y = \&$x; # so when this tries to look up the right GV for
++undef $::{_119051again}; # CvGV, it still gets a fake one
++eval { $y->() };
++pass "No crash due to CvGV pointing to glob copy in the stash";
++
+ __END__
+ Perl
+ Rules
+--
+1.8.3.1
+
diff --git a/perl-5.19.2-Fix-rules-for-parsing-numeric-escapes-in-regexes.patch b/perl-5.19.2-Fix-rules-for-parsing-numeric-escapes-in-regexes.patch
new file mode 100644
index 0000000..738c177
--- /dev/null
+++ b/perl-5.19.2-Fix-rules-for-parsing-numeric-escapes-in-regexes.patch
@@ -0,0 +1,184 @@
+From f1e1b256c5c1773d90e828cca6323c53fa23391b Mon Sep 17 00:00:00 2001
+From: Yves Orton <demerphq at gmail.com>
+Date: Tue, 25 Jun 2013 21:01:27 +0200
+Subject: [PATCH] Fix rules for parsing numeric escapes in regexes
+
+Commit 726ee55d introduced better handling of things like \87 in a
+regex, but as an unfortunate side effect broke latex2html.
+
+The rules for handling backslashes in regexen are a bit arcane.
+
+Anything starting with \0 is octal.
+
+The sequences \1 through \9 are always backrefs.
+
+Any other sequence is interpreted as a decimal, and if there
+are that many capture buffers defined in the pattern at that point
+then the sequence is a backreference. If however it is larger
+than the number of buffers the sequence is treated as an octal digit.
+
+A consequence of this is that \118 could be a backreference to
+the 118th capture buffer, or it could be the string "\11" . "8". In
+other words depending on the context we might even use a different
+number of digits for the escape!
+
+This also left an awkward edge case, of multi digit sequences
+starting with 8 or 9 like m/\87/ which would result in us parsing
+as though we had seen /87/ (iow a null byte at the start) or worse
+like /\x{00}87/ which is clearly wrong.
+
+This patches fixes the cases where the capture buffers are defined,
+and causes things like the \87 or \97 to throw the same error that
+/\8/ would. One might argue we should complain about an illegal
+octal sequence, but this seems more consistent with an error like
+/\9/ and IMO will be less surprising in an error message.
+
+This patch includes exhaustive tests of patterns of the form
+/(a)\1/, /((a))\2/ etc, so that we dont break this again if we
+change the logic more.
+---
+ regcomp.c | 31 ++++++++++++++++++++++---------
+ t/re/pat.t | 19 ++++++++++++++++++-
+ t/re/re_tests | 7 +++----
+ t/re/reg_mesg.t | 6 +++---
+ 4 files changed, 46 insertions(+), 17 deletions(-)
+
+diff --git a/regcomp.c b/regcomp.c
+index c7f8885..d01f62a 100644
+--- a/regcomp.c
++++ b/regcomp.c
+@@ -10706,7 +10706,7 @@ tryagain:
+ if (num < 1)
+ vFAIL("Reference to nonexistent or unclosed group");
+ }
+- if (!isg && num > 9 && num >= RExC_npar)
++ if (!isg && num > 9 && num >= RExC_npar && *RExC_parse != '8' && *RExC_parse != '9')
+ /* Probably a character specified in octal, e.g. \35 */
+ goto defchar;
+ else {
+@@ -10983,10 +10983,28 @@ tryagain:
+ p++;
+ ender = grok_bslash_c(*p++, UTF, SIZE_ONLY);
+ break;
+- case '0': case '1': case '2': case '3':case '4':
++ case '8': case '9': /* must be a backreference */
++ --p;
++ goto loopdone;
++ case '1': case '2': case '3':case '4':
+ case '5': case '6': case '7':
+- if (*p == '0' ||
+- (isDIGIT(p[1]) && atoi(p) >= RExC_npar))
++ /* When we parse backslash escapes there is ambiguity between
++ * backreferences and octal escapes. Any escape from \1 - \9 is
++ * a backreference, any multi-digit escape which does not start with
++ * 0 and which when evaluated as decimal could refer to an already
++ * parsed capture buffer is a backslash. Anything else is octal.
++ *
++ * Note this implies that \118 could be interpreted as 118 OR as
++ * "\11" . "8" depending on whether there were 118 capture buffers
++ * defined already in the pattern.
++ */
++ if ( !isDIGIT(p[1]) || atoi(p) <= RExC_npar )
++ { /* Not to be treated as an octal constant, go
++ find backref */
++ --p;
++ goto loopdone;
++ }
++ case '0':
+ {
+ I32 flags = PERL_SCAN_SILENT_ILLDIGIT;
+ STRLEN numlen = 3;
+@@ -11005,11 +11023,6 @@ tryagain:
+ form_short_octal_warning(p, numlen));
+ }
+ }
+- else { /* Not to be treated as an octal constant, go
+- find backref */
+- --p;
+- goto loopdone;
+- }
+ if (PL_encoding && ender < 0x100)
+ goto recode_encoding;
+ break;
+diff --git a/t/re/pat.t b/t/re/pat.t
+index bdfea87..99d719d 100644
+--- a/t/re/pat.t
++++ b/t/re/pat.t
+@@ -20,7 +20,7 @@ BEGIN {
+ require './test.pl';
+ }
+
+-plan tests => 472; # Update this when adding/deleting tests.
++plan tests => 572; # Update this when adding/deleting tests.
+
+ run_tests() unless caller;
+
+@@ -1363,6 +1363,23 @@ EOP
+ is ($s, 'XXcdXXX&', 'RT #119125 with /x');
+ }
+
++ {
++ # if we have 87 capture buffers defined then \87 should refer to the 87th.
++ # test that this is true for 1..100
++ my $str= "aa";
++ for my $i (1..100) {
++ my $pat= "a";
++ $pat= "($pat)" for 1 .. $i;
++ $pat.="\\$i";
++ eval {
++ ok($str=~/$pat/,"\\$i works with $i buffers");
++ 1;
++ } or do {
++ ok(0,"\\$i works with $i buffers");
++ };
++ }
++ }
++
+ } # End of sub run_tests
+
+ 1;
+diff --git a/t/re/re_tests b/t/re/re_tests
+index b3231c2..9a24360 100644
+--- a/t/re/re_tests
++++ b/t/re/re_tests
+@@ -1487,10 +1487,9 @@ abc\N{def - c - \\N{NAME} must be resolved by the lexer
+ [a\o{1000}] \x{200} y $& \x{200}
+
+ # The below were inserting a NULL
+-\87 87 y $& 87
+-a\87 a87 y $& a87
+-a\97 a97 y $& a97
+-
++\87 87 c - Reference to nonexistent group in regex
++a\87 a87 c - Reference to nonexistent group in regex
++a\97 a97 c - Reference to nonexistent group in regex
+
+ # The below was inserting a NULL into the character class.
+ [\8\9] \000 Sn - -
+diff --git a/t/re/reg_mesg.t b/t/re/reg_mesg.t
+index b8098fd..56c7b55 100644
+--- a/t/re/reg_mesg.t
++++ b/t/re/reg_mesg.t
+@@ -177,6 +177,9 @@ my @death =
+ 'm/[\o]/' => 'Missing braces on \o{} {#} m/[\o{#}]/',
+ 'm/[\o{}]/' => 'Number with no digits {#} m/[\o{}{#}]/',
+ 'm/(?^-i:foo)/' => 'Sequence (?^-...) not recognized {#} m/(?^-{#}i:foo)/',
++ 'm/\87/' => 'Reference to nonexistent group {#} m/\87{#}/',
++ 'm/a\87/' => 'Reference to nonexistent group {#} m/a\87{#}/',
++ 'm/a\97/' => 'Reference to nonexistent group {#} m/a\97{#}/',
+ );
+ # Tests involving a user-defined charnames translator are in pat_advanced.t
+
+@@ -203,9 +206,6 @@ my @warning = (
+ '/\018/' => '\'\018\' resolved to \'\o{1}8\' {#} m/\018{#}/',
+ '/[\08]/' => '\'\08\' resolved to \'\o{0}8\' {#} m/[\08{#}]/',
+ '/[\018]/' => '\'\018\' resolved to \'\o{1}8\' {#} m/[\018{#}]/',
+- '/\87/' => 'Unrecognized escape \8 passed through {#} m/\8{#}7/',
+- '/a\87/' => 'Unrecognized escape \8 passed through {#} m/a\8{#}7/',
+- '/a\97/' => 'Unrecognized escape \9 passed through {#} m/a\9{#}7/',
+ '/(?=a)*/' => '(?=a)* matches null string many times {#} m/(?=a)*{#}/',
+ 'my $x = \'\m\'; qr/a$x/' => 'Unrecognized escape \m passed through {#} m/a\m{#}/',
+ '/\q/' => 'Unrecognized escape \q passed through {#} m/\q{#}/',
+--
+1.8.3.1
+
diff --git a/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch b/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch
new file mode 100644
index 0000000..875abfe
--- /dev/null
+++ b/perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.patch
@@ -0,0 +1,68 @@
+From f5df269c5cef57294662d0b1f80a468b91f13643 Mon Sep 17 00:00:00 2001
+From: Father Chrysostomos <sprout at cpan.org>
+Date: Fri, 5 Jul 2013 23:59:46 -0700
+Subject: [PATCH] [perl #117917] /(?{ m|...| }) (?{ $1 })/
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+A regular expression invoked inside a regular expression code block
+can cause other code blocks in the same outer regular expression to
+see the wrong values in $1.
+
+PL_curpm holds a pointer to the match operator from which $1, $2, etc.
+get their values.
+
+Normally PL_curpm is set at the end of a match.
+
+When code blocks are embedded inside a regular expression, PL_curpm
+is set during a match to point to PL_reg_curpm, which is a dummy op
+pointing to the current regular expression.
+
+S_setup_eval_state is called at the beginning of regexp execution.
+It is responsible for setting up PL_regcurpm and making PL_curpm
+point to it.
+
+Code blocks are executed using the multicall API. PUSH_MULTICALL
+records the value of PL_curpm and POP_MULTICALL makes sure that the
+previous value of PL_curpm is restored.
+
+Executing a code block can cause PL_curpm to point to something else.
+Since we don’t necessarily do POP_MULTICALL between code block calls
+within a single regular expression (sometimes we do, depending on
+backtracking), PL_curpm may not have been restored when a second code
+block fires. So we have to restore it to point to PL_reg_curpm manu-
+ally after calling a code block.
+---
+ regexec.c | 1 +
+ t/re/re_tests | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/regexec.c b/regexec.c
+index 12548d5..6367e2e 100644
+--- a/regexec.c
++++ b/regexec.c
+@@ -4991,6 +4991,7 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
+ PL_curcop = ocurcop;
+ PL_regeol = saved_regeol;
+ S_regcp_restore(aTHX_ rex, runops_cp, &maxopenparen);
++ PL_curpm = PL_reg_curpm;
+
+ if (logical != 2)
+ break;
+diff --git a/t/re/re_tests b/t/re/re_tests
+index 9a24360..3921bb7 100644
+--- a/t/re/re_tests
++++ b/t/re/re_tests
+@@ -613,6 +613,8 @@ $(?<=^(a)) a y $1 a
+ ^[^bcd]*(c+) aexycd y $1 c
+ (?{$a=2})a*aa(?{local$a=$a+1})k*c(?{$b=$a}) yaaxxaaaacd y $b 3
+ (?{$a=2})(a(?{local$a=$a+1}))*aak*c(?{$b=$a}) yaaxxaaaacd y $b 4
++# [perl #117917]
++^(a(?{ "x" =~ m{x}})b)(??{ $1 }) abab y $& abab
+ (>a+)ab aaab n - -
+ (?>a+)b aaab y - -
+ ([[:]+) a:[b]: y $1 :[
+--
+1.8.3.1
+
diff --git a/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch b/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch
new file mode 100644
index 0000000..18ae704
--- /dev/null
+++ b/perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch
@@ -0,0 +1,69 @@
+From cccbbce940ea952c4c236049e98d21a011475cb1 Mon Sep 17 00:00:00 2001
+From: Philip Boulain <philip.boulain at smoothwall.net>
+Date: Mon, 3 Sep 2012 15:16:26 +0100
+Subject: [PATCH] Reap child in case where exception has been thrown
+
+If open3 throws due to an issue such as an exec failure, the caller
+cannot know the child PID to wait for. Therefore it is our
+responsibility to reap it.
+
+Also update POD, since on some platforms exec failures now ARE raised as
+exceptions (since perlbug #72016).
+---
+ ext/IPC-Open3/lib/IPC/Open3.pm | 4 +++-
+ ext/IPC-Open3/t/IPC-Open3.t | 7 ++++++-
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/ext/IPC-Open3/lib/IPC/Open3.pm b/ext/IPC-Open3/lib/IPC/Open3.pm
+index 989c2f6..f50146f 100644
+--- a/ext/IPC-Open3/lib/IPC/Open3.pm
++++ b/ext/IPC-Open3/lib/IPC/Open3.pm
+@@ -57,7 +57,8 @@ as file descriptors.
+ open3() returns the process ID of the child process. It doesn't return on
+ failure: it just raises an exception matching C</^open3:/>. However,
+ C<exec> failures in the child (such as no such file or permission denied),
+-are just reported to CHLD_ERR, as it is not possible to trap them.
++are just reported to CHLD_ERR under Windows and OS/2, as it is not possible
++to trap them.
+
+ If the child process dies for any reason, the next write to CHLD_IN is
+ likely to generate a SIGPIPE in the parent, which is fatal by default.
+@@ -297,6 +298,7 @@ sub _open3 {
+ if ($bytes_read) {
+ (my $bang, $to_read) = unpack('II', $buf);
+ read($stat_r, my $err = '', $to_read);
++ waitpid $kidpid, 0; # Reap child which should have exited
+ if ($err) {
+ utf8::decode $err if $] >= 5.008;
+ } else {
+diff --git a/ext/IPC-Open3/t/IPC-Open3.t b/ext/IPC-Open3/t/IPC-Open3.t
+index 7b85b82..6ab519d 100644
+--- a/ext/IPC-Open3/t/IPC-Open3.t
++++ b/ext/IPC-Open3/t/IPC-Open3.t
+@@ -14,10 +14,11 @@ BEGIN {
+ }
+
+ use strict;
+-use Test::More tests => 37;
++use Test::More tests => 38;
+
+ use IO::Handle;
+ use IPC::Open3;
++use POSIX ":sys_wait_h";
+
+ my $perl = $^X;
+
+@@ -154,6 +155,10 @@ $TB->current_test($test);
+ isnt($@, '',
+ 'open3 of a non existent program fails with an exception in the parent')
+ or do {waitpid $pid, 0};
++ SKIP: {
++ skip 'open3 returned, our responsibility to reap', 1 unless $@;
++ is(waitpid(-1, WNOHANG), -1, 'failed exec child is reaped');
++ }
+ }
+
+ $pid = eval { open3 'WRITE', '', 'ERROR', '/non/existent/program'; };
+--
+1.8.3.1
+
diff --git a/perl.spec b/perl.spec
index 9cffb0a..ca5c229 100644
--- a/perl.spec
+++ b/perl.spec
@@ -31,7 +31,7 @@
Name: perl
Version: %{perl_version}
# release number must be even higher, because dual-lived modules will be broken otherwise
-Release: 287%{?dist}
+Release: 288%{?dist}
Epoch: %{perl_epoch}
Summary: Practical Extraction and Report Language
Group: Development/Languages
@@ -99,6 +99,25 @@ Patch15: perl-5.16.3-create_libperl_soname.patch
# Install libperl.so to -Dshrpdir value
Patch16: perl-5.16.3-Install-libperl.so-to-shrpdir-on-Linux.patch
+# Fix rules for parsing numeric escapes in regexes, BZ#978233
+# Update the upstream patch to work for Perl 5.18.1
+Patch17: perl-5.19.2-Fix-rules-for-parsing-numeric-escapes-in-regexes.patch
+
+# Fix crash with \&$glob_copy, rhbz#989486, RT#119051
+# Update the upstream patch to work for Perl 5.18.1
+Patch18: perl-5.19.2-Fix-crash-with-glob_copy.patch
+
+# Fix coreamp.t's rand test, rhbz#970567, RT#118237
+Patch19: perl-5.19.2-Fix-coreamp.t-s-rand-test.patch
+
+# Reap child in case where exception has been thrown, rhbz#988805, RT#114722
+Patch20: perl-5.19.3-Reap-child-in-case-where-exception-has-been-thrown.patch
+
+# Fix using regular expressions containing multiple code blocks,
+# rhbz#982131, RT#117917
+# Update the upstream patch to work for Perl 5.18.1
+Patch21: perl-5.19.2-Fix-using-regexes-with-multiple-code-blocks.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
@@ -1884,6 +1903,11 @@ tarball from perl.org.
%patch14 -p1
%patch15 -p1
%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
%patch200 -p1
%patch201 -p1
@@ -1905,6 +1929,11 @@ perl -x patchlevel.h \
'Fedora Patch14: Do not use system Term::ReadLine::Gnu in tests (RT#118821)' \
'Fedora Patch15: Define SONAME for libperl.so' \
'Fedora Patch16: Install libperl.so to -Dshrpdir value' \
+ 'Fedora Patch17: Fix rules for parsing numeric escapes in regexes' \
+ 'Fedora Patch18: Fix crash with \&$glob_copy (RT#119051)' \
+ 'Fedora Patch19: Fix coreamp.t rand test (RT#118237)' \
+ 'Fedora Patch20: Reap child in case where exception has been thrown (RT#114722)' \
+ 'Fedora Patch21: Fix using regular expressions containing multiple code blocks (RT#117917)' \
'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}
@@ -3591,6 +3620,13 @@ sed \
# Old changelog entries are preserved in CVS.
%changelog
+* Mon Sep 09 2013 Jitka Plesnikova <jplesnik at redhat.com> - 4:5.18.1-288
+- Fix rules for parsing numeric escapes in regexes (bug #978233)
+- Fix crash with \&$glob_copy (bug #989486)
+- Fix coreamp.t's rand test (bug #970567)
+- Reap child in case where exception has been thrown (bug #988805)
+- Fix using regexes with multiple code blocks (bug #982131)
+
* Tue Aug 13 2013 Jitka Plesnikova <jplesnik at redhat.com> - 4:5.18.1-287
- 5.18.1 bump (see <http://search.cpan.org/dist/perl-5.18.1/pod/perldelta.pod>
for release notes)
More information about the scm-commits
mailing list