summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Kabo <joshkong1@gmail.com>2022-04-16 14:50:48 -0700
committerJosh Kabo <joshkong1@gmail.com>2022-04-16 16:39:37 -0700
commit0bff53135a7388d5604983e96610cbd47996d66c (patch)
treed85d5d80a43a33f059b20a7063e446fd7e2def8c
parent50bb1846d0f16fae929b2ae99824dbf90be25c92 (diff)
Unzip read success no longer breaks read loop
unzReadCurrentFile(3) returns number of bytes read, so the current code only processes the file if no bytes were read (UNZ_OK is a #define equal to 0). I've altered the break to occur only on unsuccessful read, (when unzReadCurrentFile(3) returns less than zero), and added an error message for when an unsuccessful read occurs.
-rw-r--r--editor/export_template_manager.cpp8
-rw-r--r--editor/project_manager.cpp4
2 files changed, 3 insertions, 9 deletions
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index 06c179e77c..b34b08b5de 100644
--- a/editor/export_template_manager.cpp
+++ b/editor/export_template_manager.cpp
@@ -404,9 +404,7 @@ bool ExportTemplateManager::_install_file_selected(const String &p_file, bool p_
// Read.
unzOpenCurrentFile(pkg);
ret = unzReadCurrentFile(pkg, data.ptrw(), data.size());
- if (ret != UNZ_OK) {
- break;
- }
+ ERR_BREAK_MSG(ret < 0, vformat("An error occurred while attempting to read from file: %s. This file will not be used.", file));
unzCloseCurrentFile(pkg);
String data_str;
@@ -478,9 +476,7 @@ bool ExportTemplateManager::_install_file_selected(const String &p_file, bool p_
// Read
unzOpenCurrentFile(pkg);
ret = unzReadCurrentFile(pkg, data.ptrw(), data.size());
- if (ret != UNZ_OK) {
- break;
- }
+ ERR_BREAK_MSG(ret < 0, vformat("An error occurred while attempting to read from file: %s. This file will not be used.", file));
unzCloseCurrentFile(pkg);
String base_dir = file_path.get_base_dir().trim_suffix("/");
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 08b968edb6..4ca0f18f0e 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -557,9 +557,7 @@ private:
//read
unzOpenCurrentFile(pkg);
ret = unzReadCurrentFile(pkg, data.ptrw(), data.size());
- if (ret != UNZ_OK) {
- break;
- }
+ ERR_BREAK_MSG(ret < 0, vformat("An error occurred while attempting to read from file: %s. This file will not be used.", rel_path));
unzCloseCurrentFile(pkg);
Ref<FileAccess> f = FileAccess::open(dir.plus_file(rel_path), FileAccess::WRITE);