Browse Source

Fix heap-use-after-free when resource loaded with load_threaded_request is never fetched

Co-authored-by: Pedro J. Estébanez <[email protected]>
Haoyu Qiu 1 year ago
parent
commit
dc7e309f48
1 changed files with 3 additions and 2 deletions
  1. 3 2
      core/io/resource_loader.cpp

+ 3 - 2
core/io/resource_loader.cpp

@@ -1053,8 +1053,9 @@ void ResourceLoader::clear_thread_load_tasks() {
 		thread_load_mutex.lock();
 	}
 
-	for (KeyValue<String, LoadToken *> &E : user_load_tokens) {
-		memdelete(E.value);
+	while (user_load_tokens.begin()) {
+		// User load tokens remove themselves from the map on destruction.
+		memdelete(user_load_tokens.begin()->value);
 	}
 	user_load_tokens.clear();