Skip to content

Commit 53e0895

Browse files
ademmingsjeanlego
authored andcommitted
ODIN_MEMLEAK: freed nnodes associated with BLOCKING_STATEMENTS (#462)
* freed nnodes associated with BLOCKING_STATEMENTS * moved frees into assignment_alias * added another free loop
1 parent ab16058 commit 53e0895

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

ODIN_II/SRC/netlist_create_from_ast.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3254,15 +3254,30 @@ signal_list_t *assignment_alias(ast_node_t* assignment, char *instance_name_pref
32543254
{
32553255
/* need to shrink the output list */
32563256
int i;
3257-
for (i = 0; i < output_size; i++)
3257+
for (i = 0; i < output_size; i++) {
32583258
add_pin_to_signal_list(return_list, in_1->pins[i]);
32593259

3260+
/* free unused nnodes for related BLOCKING_STATEMENT nodes */
3261+
nnode_t *temp_node = in_1->pins[i]->node;
3262+
if (temp_node->related_ast_node->type == BLOCKING_STATEMENT && temp_node->type != MEMORY) {
3263+
free_nnode(temp_node);
3264+
}
3265+
}
32603266
free_signal_list(in_1);
32613267
}
32623268
else
32633269
{
32643270
free_signal_list(return_list);
32653271
return_list = in_1;
3272+
3273+
/* free unused nnodes for related BLOCKING_STATEMENT nodes */
3274+
int i;
3275+
for (i = 0; i < output_size; i++) {
3276+
nnode_t *temp_node = in_1->pins[i]->node;
3277+
if (temp_node->related_ast_node->type == BLOCKING_STATEMENT && temp_node->type != MEMORY) {
3278+
free_nnode(temp_node);
3279+
}
3280+
}
32663281
}
32673282
}
32683283

0 commit comments

Comments
 (0)