summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-08-06 12:32:13 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-08-06 12:32:13 +0200
commitb36885c8bd64e5fd3fcd99cd8e0e93d8d1003fc2 (patch)
tree6be33b7da1415aec71e9a785750f39bacb348e3e
parent6a10330cebed1ae66ed25fe8bfb5255e937393e1 (diff)
parentf5bb14dcebd6a48aafd04a3208b5d6ad8d52f072 (diff)
downloadredot-engine-b36885c8bd64e5fd3fcd99cd8e0e93d8d1003fc2.tar.gz
Merge pull request #95186 from bruvzg/thr_load_dbl_free
[ResourceLoader] Add check to prevent double free crashes.
-rw-r--r--core/io/resource_loader.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index 2b5e83264e..c5582ad231 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<String> *ResourceLoader::load_paths_stack;
+thread_local Vector<String> *ResourceLoader::load_paths_stack = nullptr;
thread_local HashMap<int, HashMap<String, Ref<Resource>>> ResourceLoader::res_ref_overrides;
template <>