From c7ee54744176d7a58544f818d9cf12cd3500c98b Mon Sep 17 00:00:00 2001 From: "K.Kosako" Date: Tue, 20 Jun 2017 13:24:06 +0900 Subject: [PATCH] add entry_count into CallNode --- src/regcomp.c | 6 +++++- src/regparse.c | 7 ++++--- src/regparse.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/regcomp.c b/src/regcomp.c index b704c50..1d9a76a 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -3770,6 +3770,8 @@ setup_call2_call(Node* node, ScanEnv* env) CallNode* cn = CALL_(node); Node* called = NODE_CALL_BODY(cn); + cn->entry_count++; + NODE_STATUS_ADD(called, NST_CALLED); ENCLOSURE_(called)->entry_count++; setup_call2_call(called, env); @@ -3819,8 +3821,10 @@ setup_call(Node* node, ScanEnv* env, int state) break; case NODE_CALL: - if ((state & IN_ZERO) != 0) + if ((state & IN_ZERO) != 0) { NODE_STATUS_ADD(node, NST_IN_ZERO); + CALL_(node)->entry_count--; + } r = setup_call_node_call(CALL_(node), env, state); break; diff --git a/src/regparse.c b/src/regparse.c index 03c8145..1835663 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -1268,9 +1268,10 @@ node_new_call(UChar* name, UChar* name_end, int gnum) CHECK_NULL_RETURN(node); SET_NODE_TYPE(node, NODE_CALL); - CALL_(node)->name = name; - CALL_(node)->name_end = name_end; - CALL_(node)->group_num = gnum; /* call by number if gnum != 0 */ + CALL_(node)->name = name; + CALL_(node)->name_end = name_end; + CALL_(node)->group_num = gnum; /* call by number if gnum != 0 */ + CALL_(node)->entry_count = 1; return node; } #endif diff --git a/src/regparse.h b/src/regparse.h index 4909d6a..17852cd 100644 --- a/src/regparse.h +++ b/src/regparse.h @@ -242,6 +242,7 @@ typedef struct { int group_num; UChar* name; UChar* name_end; + int entry_count; } CallNode; #endif -- 2.40.0