From 28a66ce961b16b12dcb2f0bb1515def13fd2ca6c Mon Sep 17 00:00:00 2001 From: zhengchao Date: Tue, 11 Jun 2019 21:45:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4group?= =?UTF-8?q?=E6=97=B6=E5=AF=BC=E8=87=B4igraph=20assert=20#11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entry/Maat_rule.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/entry/Maat_rule.cpp b/src/entry/Maat_rule.cpp index 3dc6894..638239c 100644 --- a/src/entry/Maat_rule.cpp +++ b/src/entry/Maat_rule.cpp @@ -854,7 +854,7 @@ struct Maat_group_inner* create_group_rule(int group_id, int table_id, struct Ma group->group_name=NULL; group->vertex_id=scanner->grp_vertex_id_generator++; assert(igraph_vcount(&scanner->group_graph)==group->vertex_id); - igraph_add_vertices(&scanner->group_graph, 1, NULL); + igraph_add_vertices(&scanner->group_graph, 1, NULL); //Add 1 vertice. ret=HASH_add_by_id(scanner->vertex_id2group, group->vertex_id, group); assert(ret>0); ret=HASH_add_by_id(scanner->group_hash, group_id, group); @@ -886,7 +886,6 @@ void destroy_group_rule(struct Maat_group_inner* group_rule, int by_whom, struct switch(by_whom) { case DESTROY_GROUP_BY_REGION: - group_rule->region_cnt--; break; case DESTROY_GROUP_BY_PARENT: group_rule->parent_ref_cnt--; @@ -897,8 +896,8 @@ void destroy_group_rule(struct Maat_group_inner* group_rule, int by_whom, struct } if(group_rule->parent_ref_cnt==0&&group_rule->region_cnt==0) { - assert(group_rule->region_cnt==0); HASH_delete_by_id(scanner->group_hash, group_rule->group_id); + HASH_delete_by_id(scanner->vertex_id2group, group_rule->vertex_id); //Calling _destroy_group_rule on garbage collection to free memory. garbage_bagging(GARBAGE_GROUP_RULE, group_rule, scanner->tomb_ref); @@ -1776,6 +1775,7 @@ unsigned int del_region_from_group(struct Maat_group_inner* group,int region_id, free(region_rule); region_rule=NULL; group->region_cnt--; + assert(group->region_cnt>=0); break; } } @@ -3224,7 +3224,10 @@ void update_compile_rule(struct Maat_table_desc* table,const char* table_line,st if(p_compile->is_valid==FALSE) { ret=del_compile_rule(table,p_compile,scanner, logger); - table_rt->origin_rule_num--; + if(ret>0) + { + table_rt->origin_rule_num--; + } goto no_save; } else