From f5286d8f568a43a59b9594c110fd4dba4be424df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Herczeg?= Date: Thu, 28 Nov 2019 11:35:08 +0000 Subject: [PATCH] Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT. --- ChangeLog | 5 +++++ src/pcre2_jit_compile.c | 4 ++-- src/pcre2_jit_test.c | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0926c29..a01fc51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ Change Log for PCRE2 -------------------- +Version 10.35 +------------- + +1. Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT. + Version 10.34 21-November-2019 ------------------------------ diff --git a/src/pcre2_jit_compile.c b/src/pcre2_jit_compile.c index f564127..1d64536 100644 --- a/src/pcre2_jit_compile.c +++ b/src/pcre2_jit_compile.c @@ -13122,8 +13122,8 @@ common->read_only_data_head = NULL; common->fcc = tables + fcc_offset; common->lcc = (sljit_sw)(tables + lcc_offset); common->mode = mode; -common->might_be_empty = re->minlength == 0; -common->allow_empty_partial = (re->max_lookbehind > 0) || (re->flags & PCRE2_MATCH_EMPTY) != 0; +common->might_be_empty = (re->minlength == 0) || (re->flags & PCRE2_MATCH_EMPTY); +common->allow_empty_partial = (re->max_lookbehind > 0) || (re->flags & PCRE2_MATCH_EMPTY); common->nltype = NLTYPE_FIXED; switch(re->newline_convention) { diff --git a/src/pcre2_jit_test.c b/src/pcre2_jit_test.c index a9b3880..e0638ef 100644 --- a/src/pcre2_jit_test.c +++ b/src/pcre2_jit_test.c @@ -638,6 +638,7 @@ static struct regression_test_case regression_test_cases[] = { { MU, A, 0, 0, "(?=(?:x|ab(*ACCEPT)b))", "ab" }, { MU, A, 0, 0, "(?=(a(b(*ACCEPT)b)))a", "ab" }, { MU, A, PCRE2_NOTEMPTY, 0, "(?=a*(*ACCEPT))c", "c" }, + { MU, A, PCRE2_NOTEMPTY, 0 | F_NOMATCH, "(?=A)", "AB" }, /* Conditional blocks. */ { MU, A, 0, 0, "(?(?=(a))a|b)+k", "ababbalbbadabak" },