Skip to content

Commit 0f2cc51

Browse files
committed
assign nullptr to a node when it is freed
1 parent b7a94b9 commit 0f2cc51

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

vpr/src/route/route_tree_timing.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ static t_linked_rt_edge* rt_edge_free_list = nullptr;
4545

4646
static t_rt_node* alloc_rt_node();
4747

48-
static void free_rt_node(t_rt_node* rt_node);
48+
static void free_rt_node(t_rt_node** rt_node);
4949

5050
static t_linked_rt_edge* alloc_linked_rt_edge();
5151

@@ -144,11 +144,12 @@ alloc_rt_node() {
144144
return (rt_node);
145145
}
146146

147-
static void free_rt_node(t_rt_node* rt_node) {
147+
static void free_rt_node(t_rt_node** rt_node) {
148148
/* Adds rt_node to the proper free list. */
149149

150-
rt_node->u.next = rt_node_free_list;
151-
rt_node_free_list = rt_node;
150+
(*rt_node)->u.next = rt_node_free_list;
151+
rt_node_free_list = (*rt_node);
152+
(*rt_node) = nullptr;
152153
}
153154

154155
static t_linked_rt_edge*
@@ -660,7 +661,9 @@ bool verify_route_tree_recurr(t_rt_node* node, std::set<int>& seen_nodes) {
660661
void free_route_tree(t_rt_node* rt_node) {
661662
/* Puts the rt_nodes and edges in the tree rooted at rt_node back on the
662663
* free lists. Recursive, depth-first post-order traversal. */
663-
664+
if(rt_node == nullptr) {
665+
return;
666+
}
664667
t_linked_rt_edge *rt_edge, *next_edge;
665668

666669
rt_edge = rt_node->u.child_list;
@@ -677,7 +680,7 @@ void free_route_tree(t_rt_node* rt_node) {
677680
rr_node_to_rt_node.at(rt_node->inode) = nullptr;
678681
}
679682

680-
free_rt_node(rt_node);
683+
free_rt_node(&rt_node);
681684
}
682685

683686
void print_route_tree(const t_rt_node* rt_node) {
@@ -1056,7 +1059,7 @@ static t_rt_node* prune_route_tree_recurr(t_rt_node* node, CBRR& connections_inf
10561059
//Record as not reached
10571060
connections_inf.toreach_rr_sink(node->net_pin_index);
10581061

1059-
free_rt_node(node);
1062+
free_rt_node(&node);
10601063
return nullptr; //Pruned
10611064
}
10621065
} else if (all_children_pruned) {
@@ -1102,7 +1105,7 @@ static t_rt_node* prune_route_tree_recurr(t_rt_node* node, CBRR& connections_inf
11021105
if (reached_non_configurably && !force_prune) {
11031106
return node; //Not pruned
11041107
} else {
1105-
free_rt_node(node);
1108+
free_rt_node(&node);
11061109
return nullptr; //Pruned
11071110
}
11081111

0 commit comments

Comments
 (0)