90 lines
2.5 KiB
Diff
90 lines
2.5 KiB
Diff
From ec098f6b898334be0674dbadc9fd67a0532fa0eb Mon Sep 17 00:00:00 2001
|
|
From: ph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>
|
|
Date: Sat, 10 Aug 2019 11:34:50 +0000
|
|
Subject: [PATCH] Fix allusedtext bug, rightmost consulted character incorrect
|
|
in negative lookaheads.
|
|
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@1157 6239d852-aaf2-0410-a92c-79f79f948069
|
|
Petr Písař: Ported to 10.33.
|
|
---
|
|
src/pcre2_match.c | 1 +
|
|
testdata/testinput15 | 4 ++++
|
|
testdata/testinput2 | 2 +-
|
|
testdata/testoutput15 | 8 ++++++++
|
|
testdata/testoutput2 | 2 +-
|
|
|
|
diff --git a/src/pcre2_match.c b/src/pcre2_match.c
|
|
index 26fc01e..4471183 100644
|
|
--- a/src/pcre2_match.c
|
|
+++ b/src/pcre2_match.c
|
|
@@ -5971,6 +5971,7 @@ in rrc. */
|
|
#define LBL(val) case val: goto L_RM##val;
|
|
|
|
RETURN_SWITCH:
|
|
+if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
|
|
if (Frdepth == 0) return rrc; /* Exit from the top level */
|
|
F = (heapframe *)((char *)F - Fback_frame); /* Backtrack */
|
|
mb->cb->callout_flags |= PCRE2_CALLOUT_BACKTRACK; /* Note for callouts */
|
|
diff --git a/testdata/testinput15 b/testdata/testinput15
|
|
index 2cb712d..5dd6897 100644
|
|
--- a/testdata/testinput15
|
|
+++ b/testdata/testinput15
|
|
@@ -231,4 +231,8 @@
|
|
/(*LIMIT_HEAP=21)\[(a)]{60}/expand
|
|
\[a]{60}
|
|
|
|
+/b(?<!ax)(?!cx)/allusedtext
|
|
+ abc
|
|
+ abcz
|
|
+
|
|
# End of testinput15
|
|
diff --git a/testdata/testinput2 b/testdata/testinput2
|
|
index 4377f80..7b44fb0 100644
|
|
--- a/testdata/testinput2
|
|
+++ b/testdata/testinput2
|
|
@@ -4584,7 +4584,7 @@ B)x/alt_verbnames,mark
|
|
|
|
/abcd/null_context
|
|
abcd\=null_context
|
|
-\= Expect error
|
|
+\= Expect error - not allowed together
|
|
abcd\=null_context,find_limits
|
|
abcd\=allusedtext,startchar
|
|
|
|
diff --git a/testdata/testoutput15 b/testdata/testoutput15
|
|
index c51cda7..d854412 100644
|
|
--- a/testdata/testoutput15
|
|
+++ b/testdata/testoutput15
|
|
@@ -525,4 +525,12 @@ No match
|
|
\[a]{60}
|
|
Failed: error -63: heap limit exceeded
|
|
|
|
+/b(?<!ax)(?!cx)/allusedtext
|
|
+ abc
|
|
+ 0: abc
|
|
+ < >
|
|
+ abcz
|
|
+ 0: abcz
|
|
+ < >>
|
|
+
|
|
# End of testinput15
|
|
diff --git a/testdata/testoutput2 b/testdata/testoutput2
|
|
index 0fd2187..0803d9e 100644
|
|
--- a/testdata/testoutput2
|
|
+++ b/testdata/testoutput2
|
|
@@ -14803,7 +14803,7 @@ No match
|
|
/abcd/null_context
|
|
abcd\=null_context
|
|
0: abcd
|
|
-\= Expect error
|
|
+\= Expect error - not allowed together
|
|
abcd\=null_context,find_limits
|
|
** Not allowed together: find_limits null_context
|
|
abcd\=allusedtext,startchar
|
|
--
|
|
2.21.0
|
|
|