Fixed a unicode properrty matching issue in JIT

This commit is contained in:
Zoltan Herczeg 2022-03-23 07:53:25 +00:00
parent f7a7341726
commit 50a51cb7e6
3 changed files with 5 additions and 1 deletions

View File

@ -92,6 +92,9 @@ pattern, the optimizing "must be present for a match" character check was not
being flagged as caseless, causing some matches that should have succeeded to being flagged as caseless, causing some matches that should have succeeded to
fail. fail.
23. Fixed a unicode properrty matching issue in JIT. The character was not
fully read in caseless matching.
Version 10.39 29-October-2021 Version 10.39 29-October-2021
----------------------------- -----------------------------

View File

@ -7489,7 +7489,7 @@ while (*cc != XCL_END)
{ {
SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP); SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP);
cc++; cc++;
if (*cc == PT_CLIST) if (*cc == PT_CLIST && *cc == XCL_PROP)
{ {
other_cases = PRIV(ucd_caseless_sets) + cc[1]; other_cases = PRIV(ucd_caseless_sets) + cc[1];
while (*other_cases != NOTACHAR) while (*other_cases != NOTACHAR)

View File

@ -415,6 +415,7 @@ static struct regression_test_case regression_test_cases[] = {
{ MUP, 0, 0, 0 | F_NOMATCH, "[^\\p{Hangul}\\p{Z}]", " " }, { MUP, 0, 0, 0 | F_NOMATCH, "[^\\p{Hangul}\\p{Z}]", " " },
{ MUP, 0, 0, 0, "[\\p{Lu}\\P{Latin}]+", "c\xEA\xA4\xAE,A,b" }, { MUP, 0, 0, 0, "[\\p{Lu}\\P{Latin}]+", "c\xEA\xA4\xAE,A,b" },
{ MUP, 0, 0, 0, "[\\x{a92e}\\p{Lu}\\P{Latin}]+", "c\xEA\xA4\xAE,A,b" }, { MUP, 0, 0, 0, "[\\x{a92e}\\p{Lu}\\P{Latin}]+", "c\xEA\xA4\xAE,A,b" },
{ CMUP, 0, 0, 0, "[^S]\\B", "\xe2\x80\x8a" },
/* Possible empty brackets. */ /* Possible empty brackets. */
{ MU, A, 0, 0, "(?:|ab||bc|a)+d", "abcxabcabd" }, { MU, A, 0, 0, "(?:|ab||bc|a)+d", "abcxabcabd" },