5.18.2 bump
This commit is contained in:
parent
9025034a86
commit
8afb220ade
BIN
perl-5.18.2.tar.bz2
Normal file
BIN
perl-5.18.2.tar.bz2
Normal file
Binary file not shown.
@ -1,184 +0,0 @@
|
|||||||
From f1e1b256c5c1773d90e828cca6323c53fa23391b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yves Orton <demerphq@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
|
|
||||||
|
|
19
perl.spec
19
perl.spec
@ -1,4 +1,4 @@
|
|||||||
%global perl_version 5.18.1
|
%global perl_version 5.18.2
|
||||||
%global perl_epoch 4
|
%global perl_epoch 4
|
||||||
%global perl_arch_stem -thread-multi
|
%global perl_arch_stem -thread-multi
|
||||||
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
|
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
|
||||||
@ -30,7 +30,7 @@
|
|||||||
Name: perl
|
Name: perl
|
||||||
Version: %{perl_version}
|
Version: %{perl_version}
|
||||||
# release number must be even higher, because dual-lived modules will be broken otherwise
|
# release number must be even higher, because dual-lived modules will be broken otherwise
|
||||||
Release: 290%{?dist}
|
Release: 291%{?dist}
|
||||||
Epoch: %{perl_epoch}
|
Epoch: %{perl_epoch}
|
||||||
Summary: Practical Extraction and Report Language
|
Summary: Practical Extraction and Report Language
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
@ -98,10 +98,6 @@ Patch15: perl-5.16.3-create_libperl_soname.patch
|
|||||||
# Install libperl.so to -Dshrpdir value
|
# Install libperl.so to -Dshrpdir value
|
||||||
Patch16: perl-5.16.3-Install-libperl.so-to-shrpdir-on-Linux.patch
|
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
|
# Fix crash with \&$glob_copy, rhbz#989486, RT#119051
|
||||||
# Update the upstream patch to work for Perl 5.18.1
|
# Update the upstream patch to work for Perl 5.18.1
|
||||||
Patch18: perl-5.19.2-Fix-crash-with-glob_copy.patch
|
Patch18: perl-5.19.2-Fix-crash-with-glob_copy.patch
|
||||||
@ -143,10 +139,11 @@ BuildRequires: procps, rsyslog
|
|||||||
|
|
||||||
|
|
||||||
# compat macro needed for rebuild
|
# compat macro needed for rebuild
|
||||||
%global perl_compat perl(:MODULE_COMPAT_5.18.1)
|
%global perl_compat perl(:MODULE_COMPAT_5.18.2)
|
||||||
|
|
||||||
# Compat provides
|
# Compat provides
|
||||||
Provides: %perl_compat
|
Provides: %perl_compat
|
||||||
|
Provides: perl(:MODULE_COMPAT_5.18.1)
|
||||||
Provides: perl(:MODULE_COMPAT_5.18.0)
|
Provides: perl(:MODULE_COMPAT_5.18.0)
|
||||||
|
|
||||||
# Threading provides
|
# Threading provides
|
||||||
@ -1192,7 +1189,7 @@ Summary: Perl core modules indexed by perl versions
|
|||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
License: GPL+ or Artistic
|
License: GPL+ or Artistic
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 2.96
|
Version: 3.03
|
||||||
Requires: %perl_compat
|
Requires: %perl_compat
|
||||||
Requires: perl(version)
|
Requires: perl(version)
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
@ -1912,7 +1909,6 @@ tarball from perl.org.
|
|||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
%patch17 -p1
|
|
||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
@ -1939,7 +1935,6 @@ perl -x patchlevel.h \
|
|||||||
'Fedora Patch14: Do not use system Term::ReadLine::Gnu in tests (RT#118821)' \
|
'Fedora Patch14: Do not use system Term::ReadLine::Gnu in tests (RT#118821)' \
|
||||||
'Fedora Patch15: Define SONAME for libperl.so' \
|
'Fedora Patch15: Define SONAME for libperl.so' \
|
||||||
'Fedora Patch16: Install libperl.so to -Dshrpdir value' \
|
'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 Patch18: Fix crash with \&$glob_copy (RT#119051)' \
|
||||||
'Fedora Patch19: Fix coreamp.t rand test (RT#118237)' \
|
'Fedora Patch19: Fix coreamp.t rand test (RT#118237)' \
|
||||||
'Fedora Patch20: Reap child in case where exception has been thrown (RT#114722)' \
|
'Fedora Patch20: Reap child in case where exception has been thrown (RT#114722)' \
|
||||||
@ -3631,6 +3626,10 @@ sed \
|
|||||||
|
|
||||||
# Old changelog entries are preserved in CVS.
|
# Old changelog entries are preserved in CVS.
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 10 2013 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.18.2-291
|
||||||
|
- 5.18.2 bump (see <http://search.cpan.org/dist/perl-5.18.2/pod/perldelta.pod>
|
||||||
|
for release notes)
|
||||||
|
|
||||||
* Mon Dec 02 2013 Petr Pisar <ppisar@redhat.com> - 4:5.18.1-290
|
* Mon Dec 02 2013 Petr Pisar <ppisar@redhat.com> - 4:5.18.1-290
|
||||||
- Document Math::BigInt::CalcEmu requires Math::BigInt (bug #959096)
|
- Document Math::BigInt::CalcEmu requires Math::BigInt (bug #959096)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user