Browse Source

Fix Crash with `GraphNode`

When using `queue_free()` on GraphNodes, `p_from` can become `nullprt`.
This PR adds a check to prevent crashes in these situations.
Markus Sauermann 9 months ago
parent
commit
54373160df
1 changed files with 3 additions and 0 deletions
  1. 3 0
      scene/gui/graph_edit_arranger.cpp

+ 3 - 0
scene/gui/graph_edit_arranger.cpp

@@ -79,6 +79,9 @@ void GraphEditArranger::arrange_nodes() {
 
 
 			for (const Ref<GraphEdit::Connection> &connection : connection_list) {
 			for (const Ref<GraphEdit::Connection> &connection : connection_list) {
 				GraphNode *p_from = Object::cast_to<GraphNode>(node_names[connection->from_node]);
 				GraphNode *p_from = Object::cast_to<GraphNode>(node_names[connection->from_node]);
+				if (!p_from) {
+					continue;
+				}
 				if (connection->to_node == graph_element->get_name() && (p_from->is_selected() || arrange_entire_graph) && connection->to_node != connection->from_node) {
 				if (connection->to_node == graph_element->get_name() && (p_from->is_selected() || arrange_entire_graph) && connection->to_node != connection->from_node) {
 					if (!s.has(p_from->get_name())) {
 					if (!s.has(p_from->get_name())) {
 						s.insert(p_from->get_name());
 						s.insert(p_from->get_name());