summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>2019-11-28 11:35:08 +0000
committerzherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>2019-11-28 11:35:08 +0000
commit037a7a81a46898c61e780cd23feddbae73b87839 (patch)
tree3321db71ec96773fa14a3a2ffa65331184176428 /src
parent4c619d4d01386c5b2f90bc659f9ea0821b665644 (diff)
downloadpcre2-037a7a81a46898c61e780cd23feddbae73b87839.tar.gz
Use PCRE2_MATCH_EMPTY flag to detect empty matches in JIT.
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1190 6239d852-aaf2-0410-a92c-79f79f948069
Diffstat (limited to 'src')
-rw-r--r--src/pcre2_jit_compile.c4
-rw-r--r--src/pcre2_jit_test.c1
2 files changed, 3 insertions, 2 deletions
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" },