!107 回合上游社区补丁

From: @jade_t 
Reviewed-by: @xujing99 
Signed-off-by: @xujing99
This commit is contained in:
openeuler-ci-bot 2024-09-03 07:04:54 +00:00 committed by Gitee
commit 4f635d0fa7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 123 additions and 1 deletions

View File

@ -0,0 +1,118 @@
From 674b6640e702705e8e90125f972197fae3aa364d Mon Sep 17 00:00:00 2001
From: Philip Hazel <Philip.Hazel@gmail.com>
Date: Sat, 3 Aug 2024 17:18:56 +0100
Subject: [PATCH] Remove incorrect optimization in DFA matching when partial
matching and (*F) are involved
Conflict:don't modify ChangeLog; adapt context
Reference:https://github.com/PCRE2Project/pcre2/commit/674b6640e702705e8e90125f972197fae3aa364d
---
src/pcre2_dfa_match.c | 10 +---------
testdata/testinput6 | 9 +++++++++
testdata/testoutput6 | 13 +++++++++++++
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/src/pcre2_dfa_match.c b/src/pcre2_dfa_match.c
index 60f6b4f..1c4495f 100644
--- a/src/pcre2_dfa_match.c
+++ b/src/pcre2_dfa_match.c
@@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel
Original API code Copyright (c) 1997-2012 University of Cambridge
- New API code Copyright (c) 2016-2022 University of Cambridge
+ New API code Copyright (c) 2016-2024 University of Cambridge
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
@@ -693,7 +693,6 @@ for (;;)
int i, j;
int clen, dlen;
uint32_t c, d;
- int forced_fail = 0;
BOOL partial_newline = FALSE;
BOOL could_continue = reset_could_continue;
reset_could_continue = FALSE;
@@ -2765,7 +2764,6 @@ for (;;)
though the other "backtracking verbs" are not supported. */
case OP_FAIL:
- forced_fail++; /* Count FAILs for multiple states */
break;
case OP_ASSERT:
@@ -3247,18 +3245,12 @@ for (;;)
matches that we are going to find. If partial matching has been requested,
check for appropriate conditions.
- The "forced_ fail" variable counts the number of (*F) encountered for the
- character. If it is equal to the original active_count (saved in
- workspace[1]) it means that (*F) was found on every active state. In this
- case we don't want to give a partial match.
-
The "could_continue" variable is true if a state could have continued but
for the fact that the end of the subject was reached. */
if (new_count <= 0)
{
if (could_continue && /* Some could go on, and */
- forced_fail != workspace[1] && /* Not all forced fail & */
( /* either... */
(mb->moptions & PCRE2_PARTIAL_HARD) != 0 /* Hard partial */
|| /* or... */
diff --git a/testdata/testinput6 b/testdata/testinput6
index 0ca0d23..b71a69c 100644
--- a/testdata/testinput6
+++ b/testdata/testinput6
@@ -4392,9 +4392,18 @@
/Z(*F)Q|ZXY/
Z\=ps
+ XY\=dfa_restart
\= Expect no match
ZA\=ps
X\=ps
+
+/Z(?:(*F)Q|XY)/
+ Z\=ps
+ XY\=dfa_restart
+
+/Z(*F)Q|Z(*F)XY/
+\= Expect no match
+ Z\=ps
/\bthe cat\b/
the cat\=ps
diff --git a/testdata/testoutput6 b/testdata/testoutput6
index 607b572..38c653e 100644
--- a/testdata/testoutput6
+++ b/testdata/testoutput6
@@ -6769,11 +6769,24 @@ Partial match: dogs
/Z(*F)Q|ZXY/
Z\=ps
Partial match: Z
+ XY\=dfa_restart
+ 0: XY
\= Expect no match
ZA\=ps
No match
X\=ps
No match
+
+/Z(?:(*F)Q|XY)/
+ Z\=ps
+Partial match: Z
+ XY\=dfa_restart
+ 0: XY
+
+/Z(*F)Q|Z(*F)XY/
+\= Expect no match
+ Z\=ps
+No match
/\bthe cat\b/
the cat\=ps
--
2.43.0

View File

@ -1,6 +1,6 @@
Name: pcre2
Version: 10.42
Release: 8
Release: 9
Summary: Perl Compatible Regular Expressions
License: BSD
URL: http://www.pcre.org/
@ -30,6 +30,7 @@ Patch6018: backport-Sanity-checks-for-ctype-functions-342.patch
Patch6019: backport-Fix-incorrect-class-character-matches-in-JIT.patch
Patch6020: backport-Fixing-an-issue-using-empty-character-sets-in-jit.patch
Patch6021: backport-pcre2grep-document-better-possible-multiline-matchin.patch
Patch6022: backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch
BuildRequires: autoconf libtool automake coreutils gcc make readline-devel
Obsoletes: pcre2-utf16 pcre2-utf32 pcre2-tools
@ -147,6 +148,9 @@ make check
%{_pkgdocdir}/html/
%changelog
* Tue Sep 03 2024 dongyuzhen <dongyuzhen@h-partners.com> - 10.42-9
- DESC:Remove incorrect optimization in DFA matching when partial matching and (*F) are involved
* Tue Jul 23 2024 fuanan <fuanan3@h-partners.com> - 10.42-8
- DESC:document better possible multiline matching misses