From ae96da28d8a632e76745b7992d605231837bc64f Mon Sep 17 00:00:00 2001 From: kleonc <9283098+kleonc@users.noreply.github.com> Date: Fri, 8 Oct 2021 16:38:38 +0200 Subject: [PATCH] Delete objects enqueued for deletion during SceneTree destruction --- scene/main/scene_tree.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 3b219e9f038..b9dc6404251 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -621,7 +621,11 @@ void SceneTree::finish() { root = nullptr; } - // cleanup timers + // In case deletion of some objects was queued when destructing the `root`. + // E.g. if `queue_free()` was called for some node outside the tree when handling NOTIFICATION_PREDELETE for some node in the tree. + _flush_delete_queue(); + + // Cleanup timers. for (List>::Element *E = timers.front(); E; E = E->next()) { E->get()->release_connections(); }