[pcre] Fix look-behind regression in 8.20

Petr Pisar ppisar at fedoraproject.org
Tue Nov 15 15:39:07 UTC 2011


commit 381787cb6b18921212e272435dd0512e73ce9faa
Author: Petr Písař <ppisar at redhat.com>
Date:   Tue Nov 15 16:38:00 2011 +0100

    Fix look-behind regression in 8.20

 pcre-8.20-lookbehind.patch |   84 ++++++++++++++++++++++++++++++++++++++++++++
 pcre.spec                  |    8 ++++-
 2 files changed, 91 insertions(+), 1 deletions(-)
---
diff --git a/pcre-8.20-lookbehind.patch b/pcre-8.20-lookbehind.patch
new file mode 100644
index 0000000..a317892
--- /dev/null
+++ b/pcre-8.20-lookbehind.patch
@@ -0,0 +1,84 @@
+From ad81574f3cd7aef3e7d9106d6fa86901556b1731 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
+Date: Tue, 15 Nov 2011 16:34:01 +0100
+Subject: [PATCH] Caseless matching of backreferences with fixed length
+ repetitions was broken.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From development SVN tree:
+
+r746 | ph10 | 2011-11-15 16:07:02 +0100 (Út, 15 lis 2011) | 2 lines
+
+6.  Lookbehinds such as (?<=a{2}b) that contained a fixed repetition were
+    erroneously being rejected as "not fixed length" if PCRE_CASELESS was set.
+    This bug was probably introduced by change 9 of 8.13.
+
+Petr Pisar: Changelog entry removed.
+See <https://lists.exim.org/lurker/thread/20111115.150810.f771a73e.en.html>.
+---
+ pcre_compile.c       |    1 +
+ testdata/testinput1  |   10 ++++++++++
+ testdata/testoutput1 |   16 ++++++++++++++++
+ 3 files changed, 27 insertions(+), 0 deletions(-)
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 3fc7c82..588e981 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -1595,6 +1595,7 @@ for (;;)
+     need to skip over a multibyte character in UTF8 mode.  */
+ 
+     case OP_EXACT:
++    case OP_EXACTI: 
+     branchlength += GET2(cc,1);
+     cc += 4;
+ #ifdef SUPPORT_UTF8
+diff --git a/testdata/testinput1 b/testdata/testinput1
+index c913ee4..aa9ce42 100644
+--- a/testdata/testinput1
++++ b/testdata/testinput1
+@@ -4251,4 +4251,14 @@
+ /[:a]xxx[b:]/
+      :xxx:
+      
++/(?<=a{2})b/i
++    xaabc
++    ** Failers
++    xabc  
++
++/(?<!a{2})b/i
++    xabc
++    ** Failers
++    xaabc  
++
+ /-- End of testinput1 --/
+diff --git a/testdata/testoutput1 b/testdata/testoutput1
+index 030f04f..5a025e2 100644
+--- a/testdata/testoutput1
++++ b/testdata/testoutput1
+@@ -6952,4 +6952,20 @@ No match
+      :xxx:
+  0: :xxx:
+      
++/(?<=a{2})b/i
++    xaabc
++ 0: b
++    ** Failers
++No match
++    xabc  
++No match
++
++/(?<!a{2})b/i
++    xabc
++ 0: b
++    ** Failers
++No match
++    xaabc  
++No match
++
+ /-- End of testinput1 --/
+-- 
+1.7.6.4
+
diff --git a/pcre.spec b/pcre.spec
index 4c4f71a..1833aff 100644
--- a/pcre.spec
+++ b/pcre.spec
@@ -1,7 +1,7 @@
 # This is stable release: %%global rcversion RC3
 Name: pcre
 Version: 8.20
-Release: %{?rcversion:0.}2%{?rcversion:.%rcversion}%{?dist}
+Release: %{?rcversion:0.}3%{?rcversion:.%rcversion}%{?dist}
 %global myversion %{version}%{?rcversion:-%rcversion}
 Summary: Perl-compatible regular expression library
 Group: System Environment/Libraries
@@ -11,6 +11,8 @@ Source: ftp://ftp.csx.cam.ac.uk/pub/software/programming/%{name}/%{?rcversion:Te
 Patch0: pcre-8.10-multilib.patch
 # Refused by upstream, bug #675477
 Patch1: pcre-8.20-refused_spelling_terminated.patch
+# Fix look-behind regression, in upstream after 8.20.
+Patch2: pcre-8.20-lookbehind.patch
 BuildRequires: readline-devel
 # New libtool to get rid of rpath
 BuildRequires: autoconf, automake, libtool
@@ -51,6 +53,7 @@ Utilities demonstrating PCRE capabilities like pcregrep or pcretest.
 %patch0 -p1 -b .multilib
 libtoolize --copy --force && autoreconf
 %patch1 -p1 -b .terminated_typos
+%patch2 -p1 -b .lookbehind
 # One contributor's name is non-UTF-8
 for F in ChangeLog; do
     iconv -f latin1 -t utf8 "$F" >"${F}.utf8"
@@ -121,6 +124,9 @@ make check
 %{_mandir}/man1/pcretest.*
 
 %changelog
+* Tue Nov 15 2011 Petr Pisar <ppisar at redhat.com> - 8.20-3
+- Fix look-behind regression in 8.20
+
 * Tue Nov 15 2011 Dan Horák <dan[at]danny.cz> - 8.20-2
 - fix build on s390(x) - disable jit and use larger stack for tests
 


More information about the scm-commits mailing list