From: K.Kosako Date: Sat, 24 Aug 2019 14:50:48 +0000 (+0900) Subject: add empty_status_mem member into re_pattern_buffer X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5b4818fcae8c2d92ef54d93fec861ecb1ae24e4f;p=onig add empty_status_mem member into re_pattern_buffer --- diff --git a/src/regcomp.c b/src/regcomp.c index a30d527..c14a124 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -6528,6 +6528,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, reg->num_null_check = 0; reg->repeat_range_alloc = 0; reg->repeat_range = (OnigRepeatRange* )NULL; + reg->empty_status_mem = 0; r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env); if (r != 0) goto err; diff --git a/src/regint.h b/src/regint.h index 753ab60..d775e49 100644 --- a/src/regint.h +++ b/src/regint.h @@ -304,6 +304,14 @@ typedef unsigned int MemStatusType; (stats) |= ((MemStatusType )1 << (n));\ } while (0) +#define MEM_STATUS_LIMIT_AT(stats,n) \ + ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : 0) +#define MEM_STATUS_LIMIT_ON(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM && (n) != 0) {\ + (stats) |= ((MemStatusType )1 << (n));\ + }\ +} while (0) + #define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1) @@ -900,6 +908,7 @@ struct re_pattern_buffer { unsigned int capture_history; /* (?@...) flag (1-31) */ unsigned int bt_mem_start; /* need backtrack flag */ unsigned int bt_mem_end; /* need backtrack flag */ + unsigned int empty_status_mem; int stack_pop_level; int repeat_range_alloc; OnigRepeatRange* repeat_range;