From f5bb14dcebd6a48aafd04a3208b5d6ad8d52f072 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Tue, 6 Aug 2024 08:31:03 +0300 Subject: [PATCH] [ResourceLoader] Add check to prevent double free crashes. --- core/io/resource_loader.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 2b5e83264e4f..c5582ad2312e 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -408,7 +408,10 @@ void ResourceLoader::_thread_load_function(void *p_userdata) { MessageQueue::set_thread_singleton_override(nullptr); memdelete(own_mq_override); } - memdelete(load_paths_stack); + if (load_paths_stack) { + memdelete(load_paths_stack); + load_paths_stack = nullptr; + } } } @@ -1304,7 +1307,7 @@ bool ResourceLoader::timestamp_on_load = false; thread_local int ResourceLoader::load_nesting = 0; thread_local WorkerThreadPool::TaskID ResourceLoader::caller_task_id = 0; -thread_local Vector *ResourceLoader::load_paths_stack; +thread_local Vector *ResourceLoader::load_paths_stack = nullptr; thread_local HashMap>> ResourceLoader::res_ref_overrides; template <>