소스 검색

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 년 전
부모
커밋
dc7e309f48
1개의 변경된 파일3개의 추가작업 그리고 2개의 파일을 삭제
  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();