]> granicus.if.org Git - onig/commitdiff
use empty_status_mem in STACK_EMPTY_CHECK_MEM() and STACK_EMPTY_CHECK_MEM_REC()
authorK.Kosako <kkosako0@gmail.com>
Sun, 25 Aug 2019 13:59:35 +0000 (22:59 +0900)
committerK.Kosako <kkosako0@gmail.com>
Sun, 25 Aug 2019 13:59:35 +0000 (22:59 +0900)
src/regexec.c

index c126f44ebd92154bcd5f72c025b4d96f87542d04..642c147f5cf1ba0e89a5b09bc3b9910f761429e0 100644 (file)
@@ -1953,7 +1953,8 @@ stack_double(int is_alloca, char** arg_alloc_base,
           int level = 0;\
           (isnull) = 1;\
           while (k < stk) {\
-            if (k->type == STK_MEM_START && level == 0) {\
+            if (k->type == STK_MEM_START && level == 0 &&\
+               MEM_STATUS_LIMIT_AT((reg)->empty_status_mem, k->zid)) {\
               STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
               if (endp == 0) {\
                 (isnull) = 0; break;\
@@ -1999,7 +2000,9 @@ stack_double(int is_alloca, char** arg_alloc_base,
             (isnull) = 1;\
             while (k < stk) {\
               if (k->type == STK_MEM_START) {\
-                if (level == 0 && prec_level == 0) {\
+                if (level == 0 && \
+                   MEM_STATUS_LIMIT_AT((reg)->empty_status_mem, k->zid) !=0 \
+                   && prec_level == 0) {\
                   STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
                   if (endp == 0) {\
                     (isnull) = 0; break;\