summaryrefslogtreecommitdiffstats
path: root/scene/resources/visual_shader.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-11-14 00:03:45 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-11-14 00:03:45 +0100
commit8b705af9e52bfdb0160716329970ad64530cecf0 (patch)
treee5fc79bdd95863742137a2212e9176c436770567 /scene/resources/visual_shader.cpp
parent8d731b17f13cacb29a7c9ab5981f69871a0c9996 (diff)
parenta30dc67007e91d4a264c136459eebf262bf0c6b2 (diff)
downloadredot-engine-8b705af9e52bfdb0160716329970ad64530cecf0.tar.gz
Merge pull request #84832 from alesliehughes/fix_use_after_free
Fix VisualShader connection use after free.
Diffstat (limited to 'scene/resources/visual_shader.cpp')
-rw-r--r--scene/resources/visual_shader.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 69925fc19f..423ef3867f 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<Connection>::Element *E = g->connections.front(); E;) {
List<Connection>::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;
}