diff --git a/src/entry/Maat_api.cpp b/src/entry/Maat_api.cpp index 2ae109d..fdff783 100644 --- a/src/entry/Maat_api.cpp +++ b/src/entry/Maat_api.cpp @@ -235,6 +235,7 @@ int region_compile(_Maat_feather_t*feather, struct Maat_hierarchy_compile_mid* c for(i=0; (size_t)imagic_num==REGION_RULE_MAGIC); if(region_hit_wraper->virtual_table_ids) { virtual_table_id=region_hit_wraper->virtual_table_ids[i]; diff --git a/src/entry/Maat_hierarchy.cpp b/src/entry/Maat_hierarchy.cpp index ca14f55..b97f50f 100644 --- a/src/entry/Maat_hierarchy.cpp +++ b/src/entry/Maat_hierarchy.cpp @@ -1052,6 +1052,12 @@ void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, i mid->this_scan_region_hit_cnt++; pthread_rwlock_rdlock(&hier->rwlock); HASH_FIND_INT(hier->hash_region_by_id, ®ion_id, region); + if(!region) + { + pthread_rwlock_unlock(&hier->rwlock); + return; + } + group=region->ref_parent_group; if(group->top_group_cnt==0) diff --git a/src/entry/Maat_rule.cpp b/src/entry/Maat_rule.cpp index 413f89e..6a944fc 100644 --- a/src/entry/Maat_rule.cpp +++ b/src/entry/Maat_rule.cpp @@ -34,7 +34,7 @@ #include "stream_fuzzy_hash.h" #include "gram_index_engine.h" -int MAAT_FRAME_VERSION_3_0_20200703=1; +int MAAT_FRAME_VERSION_3_0_20200706=1; int is_valid_table_name(const char* str) { @@ -715,6 +715,8 @@ void op_expr_add_rule(struct op_expr_t* op_expr,scan_rule_t* p_rule) } void Maat_region_inner_free(struct Maat_region_inner* region) { + assert(region->magic_num==REGION_RULE_MAGIC); + region->magic_num=0; free(region); } @@ -1031,6 +1033,7 @@ int get_district_id(Maat_scanner *scanner,const char* district_str) struct Maat_region_inner* Maat_region_inner_new(int group_id, int region_id, int table_id, int district_id) { struct Maat_region_inner* region=ALLOC(struct Maat_region_inner, 1); + region->magic_num=REGION_RULE_MAGIC; region->region_id=region_id; region->group_id=group_id; region->table_id=table_id; diff --git a/src/inc_internal/Maat_rule_internal.h b/src/inc_internal/Maat_rule_internal.h index 74c3690..c016ff0 100644 --- a/src/inc_internal/Maat_rule_internal.h +++ b/src/inc_internal/Maat_rule_internal.h @@ -136,9 +136,10 @@ struct op_expr_t int table_id; int rule_type; }; - +#define REGION_RULE_MAGIC 0x4d3c2b1a struct Maat_region_inner { + long long magic_num; int region_id; int group_id; int district_id;