Browse Source

[ResourceLoader] Add check to prevent double free crashes.

bruvzg 1 year ago
parent
commit
f5bb14dceb
1 changed files with 5 additions and 2 deletions
  1. 5 2
      core/io/resource_loader.cpp

+ 5 - 2
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 <>