From bb6a1cb5a8b49de109d44d470deb38b625cd7fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gilles=20Roudi=C3=A8re?= Date: Fri, 12 Apr 2024 17:56:28 +0200 Subject: [PATCH] Fix heap-use-after-free error in TileMapLayerEditor --- editor/plugins/tiles/tile_map_layer_editor.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editor/plugins/tiles/tile_map_layer_editor.cpp b/editor/plugins/tiles/tile_map_layer_editor.cpp index c00a6d99d3a..e1a58a0998c 100644 --- a/editor/plugins/tiles/tile_map_layer_editor.cpp +++ b/editor/plugins/tiles/tile_map_layer_editor.cpp @@ -3672,10 +3672,16 @@ void TileMapLayerEditor::_node_change(Node *p_node) { void TileMapLayerEditor::_notification(int p_what) { switch (p_what) { - case NOTIFICATION_READY: { + case NOTIFICATION_ENTER_TREE: { get_tree()->connect("node_added", callable_mp(this, &TileMapLayerEditor::_node_change)); get_tree()->connect("node_removed", callable_mp(this, &TileMapLayerEditor::_node_change)); } break; + + case NOTIFICATION_EXIT_TREE: { + get_tree()->disconnect("node_added", callable_mp(this, &TileMapLayerEditor::_node_change)); + get_tree()->disconnect("node_removed", callable_mp(this, &TileMapLayerEditor::_node_change)); + } break; + case NOTIFICATION_THEME_CHANGED: { missing_tile_texture = get_editor_theme_icon(SNAME("StatusWarning")); warning_pattern_texture = get_editor_theme_icon(SNAME("WarningPattern"));