From 6e823b4b1495f9ea9c4b62aecadb6bdc63a4d3d1 Mon Sep 17 00:00:00 2001 From: nikitalita <69168929+nikitalita@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:38:29 +0200 Subject: [PATCH] PCKPacker: Fix first file being written mis-aligned --- core/io/pck_packer.cpp | 6 ++++++ editor/export/editor_export_platform.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp index 62fb70a3dd1..ee7bb15ba59 100644 --- a/core/io/pck_packer.cpp +++ b/core/io/pck_packer.cpp @@ -111,6 +111,12 @@ Error PCKPacker::pck_start(const String &p_pck_path, int p_alignment, const Stri file->store_32(0); // Reserved. } + // Align for first file. + int pad = _get_pad(alignment, file->get_position()); + for (int i = 0; i < pad; i++) { + file->store_8(0); + } + file_base = file->get_position(); file->seek(file_base_ofs); file->store_64(file_base); // Update files base. diff --git a/editor/export/editor_export_platform.cpp b/editor/export/editor_export_platform.cpp index 0ab65408f20..ca779a9d935 100644 --- a/editor/export/editor_export_platform.cpp +++ b/editor/export/editor_export_platform.cpp @@ -1966,6 +1966,12 @@ Error EditorExportPlatform::save_pack(const Ref &p_preset, b f->store_32(0); // Reserved. } + // Align for first file. + int file_padding = _get_pad(PCK_PADDING, f->get_position()); + for (int i = 0; i < file_padding; i++) { + f->store_8(0); + } + uint64_t file_base = f->get_position(); f->seek(file_base_ofs); f->store_64(file_base - pck_start_pos); // Update files base.