From 03949420d5e138478f364081251409dba52a43a3 Mon Sep 17 00:00:00 2001 From: "yu.dongliang" <18588496441@163.com> Date: Thu, 12 Jun 2025 00:52:01 +0800 Subject: [PATCH] fix: core dump for some simple circuit --- ses_node_analysis.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) 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); -- 2.25.1