pcre2/pcre2-10.33-Fix-allusedtext-bug-rightmost-consulted-character-in.patch
2019-08-12 14:25:22 +02:00

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