Fix crash when exporting projects with shared libraries

(cherry picked from commit 680bcef82546fa0f50b431f20423b62621d1c5ac)
This commit is contained in:
Haoyu Qiu 2022-03-23 13:53:32 +08:00 committed by Relintai
parent 92561386ec
commit 10eba686fb
3 changed files with 9 additions and 2 deletions

View File

@ -146,6 +146,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);

View File

@ -185,6 +185,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);

View File

@ -1691,8 +1691,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 // If shared object files, copy them.
da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
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) {