From e7837828f62c97b4a9722d34dfffb8d2b7cf74ea Mon Sep 17 00:00:00 2001 From: Marcelo Fernandez Date: Tue, 6 Mar 2018 12:13:18 -0300 Subject: [PATCH] Improved error checking at EditorExportPlatformPC::export_project (cherry picked from commit 0876502f7288a6d4e4bfb58f8692db3516bebb7c) --- core/os/dir_access.cpp | 7 ++++--- editor/editor_export.cpp | 31 ++++++++++++++----------------- platform/osx/export/export.cpp | 10 ++++++---- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp index 1941b82602f..330a9153ef0 100644 --- a/core/os/dir_access.cpp +++ b/core/os/dir_access.cpp @@ -301,8 +301,8 @@ Error DirAccess::copy(String p_from, String p_to, int p_chmod_flags) { FileAccess *fsrc = FileAccess::open(p_from, FileAccess::READ, &err); if (err) { - - ERR_FAIL_COND_V(err, err); + ERR_PRINTS("Failed to open " + p_from); + return err; } FileAccess *fdst = FileAccess::open(p_to, FileAccess::WRITE, &err); @@ -310,7 +310,8 @@ Error DirAccess::copy(String p_from, String p_to, int p_chmod_flags) { fsrc->close(); memdelete(fsrc); - ERR_FAIL_COND_V(err, err); + ERR_PRINTS("Failed to open " + p_to); + return err; } fsrc->seek_end(0); diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index 91292b0686d..8e4d241a81f 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -1353,27 +1353,24 @@ Error EditorExportPlatformPC::export_project(const Ref &p_pr DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); Error err = da->copy(template_path, p_path, get_chmod_flags()); - memdelete(da); + if (err == OK) { + String pck_path = p_path.get_basename() + ".pck"; - if (err != OK) { - return err; + Vector so_files; + + err = save_pack(p_preset, pck_path, &so_files); + + if (err == OK && !so_files.empty()) { + //if shared object files, copy them + da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + 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())); + } + } } - String pck_path = p_path.get_basename() + ".pck"; - - Vector so_files; - - err = save_pack(p_preset, pck_path, &so_files); - - if (err != OK || so_files.empty()) - return err; - //if shared object files, copy them - da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - for (int i = 0; i < so_files.size(); i++) { - da->copy(so_files[i].path, p_path.get_base_dir().plus_file(so_files[i].path.get_file())); - } memdelete(da); - return OK; + return err; } void EditorExportPlatformPC::set_extension(const String &p_extension, const String &p_feature_key) { diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 3d6455b492c..a42a6863452 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -508,7 +508,7 @@ Error EditorExportPlatformOSX::export_project(const Ref &p_p if (use_dmg()) { String pack_path = tmp_app_path_name + "/Contents/Resources/" + pkg_name + ".pck"; Vector shared_objects; - Error err = save_pack(p_preset, pack_path, &shared_objects); + err = save_pack(p_preset, pack_path, &shared_objects); // see if we can code sign our new package String identity = p_preset->get("codesign/identity"); @@ -516,7 +516,7 @@ Error EditorExportPlatformOSX::export_project(const Ref &p_p if (err == OK) { DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); for (int i = 0; i < shared_objects.size(); i++) { - da->copy(shared_objects[i].path, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file()); + err = da->copy(shared_objects[i].path, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file()); if (err == OK && identity != "") { err = _code_sign(p_preset, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file()); } @@ -561,7 +561,7 @@ Error EditorExportPlatformOSX::export_project(const Ref &p_p String pack_path = EditorSettings::get_singleton()->get_cache_dir().plus_file(pkg_name + ".pck"); Vector shared_objects; - Error err = save_pack(p_preset, pack_path, &shared_objects); + err = save_pack(p_preset, pack_path, &shared_objects); if (err == OK) { zipOpenNewFileInZip(dst_pkg_zip, @@ -593,7 +593,9 @@ Error EditorExportPlatformOSX::export_project(const Ref &p_p } else { err = ERR_CANT_OPEN; } + } + if (err == OK) { //add shared objects for (int i = 0; i < shared_objects.size(); i++) { Vector file = FileAccess::get_file_as_array(shared_objects[i].path); @@ -621,7 +623,7 @@ Error EditorExportPlatformOSX::export_project(const Ref &p_p zipClose(dst_pkg_zip, NULL); } - return OK; + return err; } bool EditorExportPlatformOSX::can_export(const Ref &p_preset, String &r_error, bool &r_missing_templates) const {