Fix JIT to respect NOTEMPTY options
This commit is contained in:
parent
a392626e04
commit
4313812067
@ -0,0 +1,44 @@
|
|||||||
|
From 037a7a81a46898c61e780cd23feddbae73b87839 Mon Sep 17 00:00:00 2001
|
||||||
|
From: zherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>
|
||||||
|
Date: Thu, 28 Nov 2019 11:35:08 +0000
|
||||||
|
Subject: [PATCH] Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT.
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1190 6239d852-aaf2-0410-a92c-79f79f948069
|
||||||
|
Petr Písař: Ported to 10.34.
|
||||||
|
---
|
||||||
|
src/pcre2_jit_compile.c | 4 ++--
|
||||||
|
src/pcre2_jit_test.c | 1 +
|
||||||
|
|
||||||
|
diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c
|
||||||
|
index f564127..1d64536 100644
|
||||||
|
--- a/src/pcre2_jit_compile.c
|
||||||
|
+++ b/src/pcre2_jit_compile.c
|
||||||
|
@@ -13122,8 +13122,8 @@ common->read_only_data_head = NULL;
|
||||||
|
common->fcc = tables + fcc_offset;
|
||||||
|
common->lcc = (sljit_sw)(tables + lcc_offset);
|
||||||
|
common->mode = mode;
|
||||||
|
-common->might_be_empty = re->minlength == 0;
|
||||||
|
-common->allow_empty_partial = (re->max_lookbehind > 0) || (re->flags & PCRE2_MATCH_EMPTY) != 0;
|
||||||
|
+common->might_be_empty = (re->minlength == 0) || (re->flags & PCRE2_MATCH_EMPTY);
|
||||||
|
+common->allow_empty_partial = (re->max_lookbehind > 0) || (re->flags & PCRE2_MATCH_EMPTY);
|
||||||
|
common->nltype = NLTYPE_FIXED;
|
||||||
|
switch(re->newline_convention)
|
||||||
|
{
|
||||||
|
diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c
|
||||||
|
index a9b3880..e0638ef 100644
|
||||||
|
--- a/src/pcre2_jit_test.c
|
||||||
|
+++ b/src/pcre2_jit_test.c
|
||||||
|
@@ -638,6 +638,7 @@ static struct regression_test_case regression_test_cases[] = {
|
||||||
|
{ MU, A, 0, 0, "(?=(?:x|ab(*ACCEPT)b))", "ab" },
|
||||||
|
{ MU, A, 0, 0, "(?=(a(b(*ACCEPT)b)))a", "ab" },
|
||||||
|
{ MU, A, PCRE2_NOTEMPTY, 0, "(?=a*(*ACCEPT))c", "c" },
|
||||||
|
+ { MU, A, PCRE2_NOTEMPTY, 0 | F_NOMATCH, "(?=A)", "AB" },
|
||||||
|
|
||||||
|
/* Conditional blocks. */
|
||||||
|
{ MU, A, 0, 0, "(?(?=(a))a|b)+k", "ababbalbbadabak" },
|
||||||
|
--
|
||||||
|
2.21.0
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
#%%global rcversion RC1
|
#%%global rcversion RC1
|
||||||
Name: pcre2
|
Name: pcre2
|
||||||
Version: 10.34
|
Version: 10.34
|
||||||
Release: %{?rcversion:0.}1%{?rcversion:.%rcversion}%{?dist}
|
Release: %{?rcversion:0.}2%{?rcversion:.%rcversion}%{?dist}
|
||||||
%global myversion %{version}%{?rcversion:-%rcversion}
|
%global myversion %{version}%{?rcversion:-%rcversion}
|
||||||
Summary: Perl-compatible regular expression library
|
Summary: Perl-compatible regular expression library
|
||||||
# the library: BSD with exceptions
|
# the library: BSD with exceptions
|
||||||
@ -51,6 +51,9 @@ Source1: https://ftp.pcre.org/pub/pcre/%{?rcversion:Testing/}%{name}-%{myvers
|
|||||||
Source2: https://ftp.pcre.org/pub/pcre/Public-Key
|
Source2: https://ftp.pcre.org/pub/pcre/Public-Key
|
||||||
# Do no set RPATH if libdir is not /usr/lib
|
# Do no set RPATH if libdir is not /usr/lib
|
||||||
Patch0: pcre2-10.10-Fix-multilib.patch
|
Patch0: pcre2-10.10-Fix-multilib.patch
|
||||||
|
# Fix JIT to respect NOTEMPTY options, upstream bug #2473,
|
||||||
|
# in upstream after 10.34
|
||||||
|
Patch1: pcre-10.34-Use-PCRE2_MATCH_EMPTY-flag-to-detect-empty-matches-i.patch
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: coreutils
|
BuildRequires: coreutils
|
||||||
@ -129,6 +132,7 @@ Utilities demonstrating PCRE2 capabilities like pcre2grep or pcre2test.
|
|||||||
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
|
||||||
%setup -q -n %{name}-%{myversion}
|
%setup -q -n %{name}-%{myversion}
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
# Because of multilib patch
|
# Because of multilib patch
|
||||||
libtoolize --copy --force
|
libtoolize --copy --force
|
||||||
autoreconf -vif
|
autoreconf -vif
|
||||||
@ -226,6 +230,9 @@ make %{?_smp_mflags} check VERBOSE=yes
|
|||||||
%{_mandir}/man1/pcre2test.*
|
%{_mandir}/man1/pcre2test.*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Nov 28 2019 Petr Pisar <ppisar@redhat.com> - 10.34-2
|
||||||
|
- Fix JIT to respect NOTEMPTY options (upstream bug #2473)
|
||||||
|
|
||||||
* Fri Nov 22 2019 Petr Pisar <ppisar@redhat.com> - 10.34-1
|
* Fri Nov 22 2019 Petr Pisar <ppisar@redhat.com> - 10.34-1
|
||||||
- 10.34 bump
|
- 10.34 bump
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user