瀏覽代碼

Fix crash on cleanup of EditorFileServer

(cherry picked from commit 565796518d27e345c4d53a13048f306a8f2c57a7)
Pedro J. Estébanez 4 年之前
父節點
當前提交
8be3995efa
共有 2 個文件被更改,包括 4 次插入4 次删除
  1. 3 2
      editor/fileserver/editor_file_server.cpp
  2. 1 2
      editor/fileserver/editor_file_server.h

+ 3 - 2
editor/fileserver/editor_file_server.cpp

@@ -43,7 +43,7 @@ void EditorFileServer::_close_client(ClientData *cd) {
 
 	cd->connection->disconnect_from_host();
 	cd->efs->wait_mutex.lock();
-	cd->efs->to_wait.insert(&cd->thread);
+	cd->efs->to_wait.insert(cd->thread);
 	cd->efs->wait_mutex.unlock();
 	while (cd->files.size()) {
 		memdelete(cd->files.front()->get());
@@ -291,7 +291,8 @@ void EditorFileServer::_thread_start(void *s) {
 				cd->connection = self->server->take_connection();
 				cd->efs = self;
 				cd->quit = false;
-				cd->thread.start(_subthread_start, cd);
+				cd->thread = memnew(Thread);
+				cd->thread->start(_subthread_start, cd);
 			}
 		}
 

+ 1 - 2
editor/fileserver/editor_file_server.h

@@ -48,8 +48,7 @@ class EditorFileServer : public Object {
 	};
 
 	struct ClientData {
-
-		Thread thread;
+		Thread *thread;
 		Ref<StreamPeerTCP> connection;
 		Map<int, FileAccess *> files;
 		EditorFileServer *efs;