Browse Source

Fix crash when exporting projects with shared libraries

(cherry picked from commit 680bcef82546fa0f50b431f20423b62621d1c5ac)
Haoyu Qiu 3 years ago
parent
commit
50ba2d3051
3 changed files with 9 additions and 2 deletions
  1. 4 0
      core/os/dir_access.h
  2. 4 0
      core/os/file_access.h
  3. 1 2
      editor/editor_export.cpp

+ 4 - 0
core/os/dir_access.h

@@ -145,6 +145,10 @@ struct DirAccessRef {
 	operator bool() const { return f != nullptr; }
 	operator bool() const { return f != nullptr; }
 	DirAccess *f;
 	DirAccess *f;
 	DirAccessRef(DirAccess *fa) { f = fa; }
 	DirAccessRef(DirAccess *fa) { f = fa; }
+	DirAccessRef(DirAccessRef &&other) {
+		f = other.f;
+		other.f = nullptr;
+	}
 	~DirAccessRef() {
 	~DirAccessRef() {
 		if (f) {
 		if (f) {
 			memdelete(f);
 			memdelete(f);

+ 4 - 0
core/os/file_access.h

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

+ 1 - 2
editor/editor_export.cpp

@@ -1682,8 +1682,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
 		}
 		}
 
 
 		if (err == OK && !so_files.empty()) {
 		if (err == OK && !so_files.empty()) {
-			//if shared object files, copy them
-			da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+			// If shared object files, copy them.
 			for (int i = 0; i < so_files.size() && err == OK; i++) {
 			for (int i = 0; i < so_files.size() && err == OK; i++) {
 				err = da->copy(so_files[i].path, p_path.get_base_dir().plus_file(so_files[i].path.get_file()));
 				err = da->copy(so_files[i].path, p_path.get_base_dir().plus_file(so_files[i].path.get_file()));
 				if (err == OK) {
 				if (err == OK) {