Fix issue with \Q\E after a callout before an assertion condition.
This commit is contained in:
parent
fdf7946ee0
commit
f676362977
|
@ -42,6 +42,9 @@ some minor bugs and Perl incompatibilities were fixed, including:
|
||||||
/[[:ascii:]-z]/) now generates an error. Perl does accept this as a
|
/[[:ascii:]-z]/) now generates an error. Perl does accept this as a
|
||||||
literal, but gives a warning, so it seems best to fail it in PCRE.
|
literal, but gives a warning, so it seems best to fail it in PCRE.
|
||||||
|
|
||||||
|
(h) An empty \Q\E sequence may appear after a callout that precedes an
|
||||||
|
assertion condition (it is, of course, ignored).
|
||||||
|
|
||||||
One effect of the refactoring is that some error numbers and messages have
|
One effect of the refactoring is that some error numbers and messages have
|
||||||
changed, and the pattern offset given for compiling errors is not always the
|
changed, and the pattern offset given for compiling errors is not always the
|
||||||
right-most character that has been read. In particular, for a variable-length
|
right-most character that has been read. In particular, for a variable-length
|
||||||
|
|
|
@ -2321,6 +2321,12 @@ while (ptr < ptrend)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (expect_cond_assert > 0) /* A literal is not allowed if we are */
|
||||||
|
{ /* expecting a conditional assertion, */
|
||||||
|
ptr--; /* but an empty \Q\E sequence is OK. */
|
||||||
|
errorcode = ERR28;
|
||||||
|
goto FAILED;
|
||||||
|
}
|
||||||
if (!inverbname && after_manual_callout-- <= 0)
|
if (!inverbname && after_manual_callout-- <= 0)
|
||||||
parsed_pattern = manage_callouts(thisptr, &previous_callout, options,
|
parsed_pattern = manage_callouts(thisptr, &previous_callout, options,
|
||||||
parsed_pattern, cb);
|
parsed_pattern, cb);
|
||||||
|
|
|
@ -4952,4 +4952,8 @@ a)"xI
|
||||||
|
|
||||||
/[:[:alnum:]-[[a:lnum:]+/
|
/[:[:alnum:]-[[a:lnum:]+/
|
||||||
|
|
||||||
|
/((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
|
||||||
|
|
||||||
|
/((?(?C'')\Q\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
|
||||||
|
|
||||||
# End of testinput2
|
# End of testinput2
|
||||||
|
|
|
@ -15434,6 +15434,11 @@ Failed: error 128 at offset 63: assertion expected after (?( or (?(?C)
|
||||||
/[:[:alnum:]-[[a:lnum:]+/
|
/[:[:alnum:]-[[a:lnum:]+/
|
||||||
Failed: error 150 at offset 11: invalid range in character class
|
Failed: error 150 at offset 11: invalid range in character class
|
||||||
|
|
||||||
|
/((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
|
||||||
|
Failed: error 128 at offset 11: assertion expected after (?( or (?(?C)
|
||||||
|
|
||||||
|
/((?(?C'')\Q\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
|
||||||
|
|
||||||
# End of testinput2
|
# End of testinput2
|
||||||
Error -63: PCRE2_ERROR_BADDATA (unknown error number)
|
Error -63: PCRE2_ERROR_BADDATA (unknown error number)
|
||||||
Error -62: bad serialized data
|
Error -62: bad serialized data
|
||||||
|
|
Loading…
Reference in New Issue