From: yu.dongliang <18588496441@163.com> Date: Wed, 11 Jun 2025 16:52:01 +0000 (+0800) Subject: fix: core dump for some simple circuit X-Git-Url: http://baseworks.info/?a=commitdiff_plain;h=03949420d5e138478f364081251409dba52a43a3;p=ses.git fix: core dump for some simple circuit --- diff --git a/ses_node_analysis.c b/ses_node_analysis.c index 3bac660..e8ddc76 100644 --- a/ses_node_analysis.c +++ b/ses_node_analysis.c @@ -1065,6 +1065,8 @@ static int __ses_nodes_split(scf_vector_t* groups, scf_vector_t* nodes, scf_vect ses_group_t* g; ses_node_t* node; ses_edge_t* edge; + int i; + int j; if (nodes->size <= 0) return 0; @@ -1085,8 +1087,6 @@ static int __ses_nodes_split(scf_vector_t* groups, scf_vector_t* nodes, scf_vect assert(0 == scf_vector_del(nodes, node)); - int i; - int j; for (i = 0; i < g->nodes->size; i++) { node = g->nodes->data[i]; @@ -1140,7 +1140,13 @@ static int __ses_nodes_split(scf_vector_t* groups, scf_vector_t* nodes, scf_vect } assert(0 == nodes->size); - assert(0 == edges->size); + + for (i = 0; i < edges->size; i++) { + edge = edges->data[i]; + + edge->index = i; + } + return 0; } @@ -1162,13 +1168,6 @@ int __ses_nodes_paths_solve(ScfEfunction* f, scf_vector_t* paths, int* changed, if (ret < 0) goto error; - if (0 == nodes->size) { - ses_edges_print(edges); - - ret = __ses_nodes_solve(f, nodes, edges, changed, ps, count); - goto error; - } - ret = __ses_nodes_split(groups, nodes, edges); if (ret < 0) goto error; @@ -1184,6 +1183,13 @@ int __ses_nodes_paths_solve(ScfEfunction* f, scf_vector_t* paths, int* changed, goto error; } + if (edges->size > 0) { + ses_edges_print(edges); + + ret = __ses_nodes_solve(f, nodes, edges, changed, ps, count); + goto error; + } + error: scf_vector_clear(nodes, (void (*)(void*) )ses_node_free); scf_vector_clear(edges, (void (*)(void*) )ses_edge_free);