Fix allusedtext bug, rightmost consulted character incorrect in negative

lookaheads.
This commit is contained in:
Philip.Hazel 2019-08-10 11:34:50 +00:00
parent ce751bfc84
commit 71eb916d79
6 changed files with 19 additions and 2 deletions

View File

@ -129,6 +129,10 @@ that is remembered as a minimum length), the whole group's length was
incorrectly recorded as 65535, leading to incorrect "no match" when start-up incorrectly recorded as 65535, leading to incorrect "no match" when start-up
optimizations were in force. optimizations were in force.
29. The "rightmost consulted character" value was not always correct; in
particular, if a pattern ended with a negative lookahead, characters that were
inspected in that lookahead were not included.
Version 10.33 16-April-2019 Version 10.33 16-April-2019
--------------------------- ---------------------------

View File

@ -5971,6 +5971,7 @@ in rrc. */
#define LBL(val) case val: goto L_RM##val; #define LBL(val) case val: goto L_RM##val;
RETURN_SWITCH: RETURN_SWITCH:
if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr;
if (Frdepth == 0) return rrc; /* Exit from the top level */ if (Frdepth == 0) return rrc; /* Exit from the top level */
F = (heapframe *)((char *)F - Fback_frame); /* Backtrack */ F = (heapframe *)((char *)F - Fback_frame); /* Backtrack */
mb->cb->callout_flags |= PCRE2_CALLOUT_BACKTRACK; /* Note for callouts */ mb->cb->callout_flags |= PCRE2_CALLOUT_BACKTRACK; /* Note for callouts */

View File

@ -231,4 +231,8 @@
/(*LIMIT_HEAP=21)\[(a)]{60}/expand /(*LIMIT_HEAP=21)\[(a)]{60}/expand
\[a]{60} \[a]{60}
/b(?<!ax)(?!cx)/allusedtext
abc
abcz
# End of testinput15 # End of testinput15

2
testdata/testinput2 vendored
View File

@ -4584,7 +4584,7 @@ B)x/alt_verbnames,mark
/abcd/null_context /abcd/null_context
abcd\=null_context abcd\=null_context
\= Expect error \= Expect error - not allowed together
abcd\=null_context,find_limits abcd\=null_context,find_limits
abcd\=allusedtext,startchar abcd\=allusedtext,startchar

View File

@ -525,4 +525,12 @@ No match
\[a]{60} \[a]{60}
Failed: error -63: heap limit exceeded Failed: error -63: heap limit exceeded
/b(?<!ax)(?!cx)/allusedtext
abc
0: abc
< >
abcz
0: abcz
< >>
# End of testinput15 # End of testinput15

View File

@ -14803,7 +14803,7 @@ No match
/abcd/null_context /abcd/null_context
abcd\=null_context abcd\=null_context
0: abcd 0: abcd
\= Expect error \= Expect error - not allowed together
abcd\=null_context,find_limits abcd\=null_context,find_limits
** Not allowed together: find_limits null_context ** Not allowed together: find_limits null_context
abcd\=allusedtext,startchar abcd\=allusedtext,startchar