Skip to content

Commit

Permalink
Merge pull request #54673 from bruvzg/macos_zip_export
Browse files Browse the repository at this point in the history
[Export] Read and ZIP project files in 16K chunks instead of reading the whole file at once.
  • Loading branch information
akien-mga authored Nov 6, 2021
2 parents 4651b2a + c8f3dd7 commit 67b5577
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions platform/osx/export/export_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1048,8 +1048,21 @@ void EditorExportPlatformOSX::_zip_folder_recursive(zipFile &p_zip, const String
0x0314, // "version made by", 0x03 - Unix, 0x14 - ZIP specification version 2.0, required to store Unix file permissions
0);

Vector<uint8_t> array = FileAccess::get_file_as_array(dir.plus_file(f));
zipWriteInFileInZip(p_zip, array.ptr(), array.size());
FileAccessRef fa = FileAccess::open(dir.plus_file(f), FileAccess::READ);
if (!fa) {
ERR_FAIL_MSG("Can't open file to read from path '" + String(dir.plus_file(f)) + "'.");
}
const int bufsize = 16384;
uint8_t buf[bufsize];

while (true) {
uint64_t got = fa->get_buffer(buf, bufsize);
if (got == 0) {
break;
}
zipWriteInFileInZip(p_zip, buf, got);
}

zipCloseFileInZip(p_zip);
}
}
Expand Down

0 comments on commit 67b5577

Please sign in to comment.