]> granicus.if.org Git - onig/commitdiff
add empty_status_mem member into re_pattern_buffer
authorK.Kosako <kkosako0@gmail.com>
Sat, 24 Aug 2019 14:50:48 +0000 (23:50 +0900)
committerK.Kosako <kkosako0@gmail.com>
Sat, 24 Aug 2019 14:50:48 +0000 (23:50 +0900)
src/regcomp.c
src/regint.h

index a30d52794e35a90e1cc20ce492a8407623c15e36..c14a124c5f00a8c8eba4aca62c6f9d4de406df94 100644 (file)
@@ -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;
index 753ab608ff20c102ca7ee0ad46dcf77dd380064e..d775e49007524a539d96b5163593b405b94ae3d9 100644 (file)
@@ -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;