浏览代码

Fix crash when exporting projects with shared libraries

Haoyu Qiu 3 年之前
父节点
当前提交
680bcef825
共有 3 个文件被更改,包括 8 次插入1 次删除
  1. 4 0
      core/io/dir_access.h
  2. 4 0
      core/io/file_access.h
  3. 0 1
      editor/editor_export.cpp

+ 4 - 0
core/io/dir_access.h

@@ -137,6 +137,10 @@ struct DirAccessRef {
 	DirAccess *f = nullptr;
 
 	DirAccessRef(DirAccess *fa) { f = fa; }
+	DirAccessRef(DirAccessRef &&other) {
+		f = other.f;
+		other.f = nullptr;
+	}
 	~DirAccessRef() {
 		if (f) {
 			memdelete(f);

+ 4 - 0
core/io/file_access.h

@@ -188,6 +188,10 @@ struct FileAccessRef {
 	operator FileAccess *() { return f; }
 
 	FileAccessRef(FileAccess *fa) { f = fa; }
+	FileAccessRef(FileAccessRef &&other) {
+		f = other.f;
+		other.f = nullptr;
+	}
 	~FileAccessRef() {
 		if (f) {
 			memdelete(f);

+ 0 - 1
editor/editor_export.cpp

@@ -1878,7 +1878,6 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
 
 		if (err == OK && !so_files.is_empty()) {
 			// If shared object files, copy them.
-			da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
 			for (int i = 0; i < so_files.size() && err == OK; i++) {
 				String src_path = ProjectSettings::get_singleton()->globalize_path(so_files[i].path);
 				String target_path;