Fix bug in VERSION conditional test in DFA matching.
This commit is contained in:
parent
f33fc9b85c
commit
86349f8814
|
@ -114,6 +114,10 @@ the option applies only to unrecognized or malformed escape sequences.
|
|||
|
||||
28. Fix word boundary in JIT compiler. Patch by Mike Munday.
|
||||
|
||||
29. The pcre2_dfa_match() function was incorrectly handling conditional version
|
||||
tests such as (?(VERSION>=0)...) when the version test was true. Incorrect
|
||||
processing or a crash could result.
|
||||
|
||||
|
||||
Version 10.32 10-September-2018
|
||||
-------------------------------
|
||||
|
|
|
@ -2760,7 +2760,7 @@ for (;;)
|
|||
/* There is also an always-true condition */
|
||||
|
||||
else if (condcode == OP_TRUE)
|
||||
{ ADD_ACTIVE(state_offset + LINK_SIZE + 2 + IMM2_SIZE, 0); }
|
||||
{ ADD_ACTIVE(state_offset + LINK_SIZE + 2, 0); }
|
||||
|
||||
/* The only supported version of OP_RREF is for the value RREF_ANY,
|
||||
which means "test if in any recursion". We can't test for specifically
|
||||
|
|
|
@ -4962,4 +4962,14 @@
|
|||
/foobar/g
|
||||
the foobar thing foobar again\=copy_matched_subject
|
||||
|
||||
/(?(VERSION>=0)^B0W)/
|
||||
B0W-W0W
|
||||
\= Expect no match
|
||||
0
|
||||
|
||||
/(?(VERSION>=1000)^B0W|W0W)/
|
||||
B0W-W0W
|
||||
\= Expect no match
|
||||
0
|
||||
|
||||
# End of testinput6
|
||||
|
|
|
@ -7794,4 +7794,18 @@ No match
|
|||
0: foobar
|
||||
0: foobar
|
||||
|
||||
/(?(VERSION>=0)^B0W)/
|
||||
B0W-W0W
|
||||
0: B0W
|
||||
\= Expect no match
|
||||
0
|
||||
No match
|
||||
|
||||
/(?(VERSION>=1000)^B0W|W0W)/
|
||||
B0W-W0W
|
||||
0: W0W
|
||||
\= Expect no match
|
||||
0
|
||||
No match
|
||||
|
||||
# End of testinput6
|
||||
|
|
Loading…
Reference in New Issue