From a30dc67007e91d4a264c136459eebf262bf0c6b2 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Mon, 13 Nov 2023 16:21:59 +1100 Subject: [PATCH] Fix VisualShader connection use after free. --- scene/resources/visual_shader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 69925fc19ff..423ef3867f7 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -963,13 +963,13 @@ void VisualShader::remove_node(Type p_type, int p_id) { for (List::Element *E = g->connections.front(); E;) { List::Element *N = E->next(); if (E->get().from_node == p_id || E->get().to_node == p_id) { - g->connections.erase(E); if (E->get().from_node == p_id) { g->nodes[E->get().to_node].prev_connected_nodes.erase(p_id); g->nodes[E->get().to_node].node->set_input_port_connected(E->get().to_port, false); } else if (E->get().to_node == p_id) { g->nodes[E->get().from_node].next_connected_nodes.erase(p_id); } + g->connections.erase(E); } E = N; }