From 43b2edabf5a77167ae332e5a92cc43d7ef5be494 Mon Sep 17 00:00:00 2001 From: othman alzahrani Date: Mon, 8 Jun 2026 09:18:46 +0300 Subject: [PATCH] Fix ZIPPacker creating empty directory entries - bruvzg fix --- modules/zip/zip_packer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/zip/zip_packer.cpp b/modules/zip/zip_packer.cpp index 8bc13ba7c9..6242261563 100644 --- a/modules/zip/zip_packer.cpp +++ b/modules/zip/zip_packer.cpp @@ -70,7 +70,7 @@ int ZIPPacker::get_compression_level() const { Error ZIPPacker::start_file(const String &p_path, BitField p_permissions, uint64_t p_modified_time) { ERR_FAIL_COND_V_MSG(fa.is_null(), FAILED, "ZIPPacker must be opened before use."); - if (!p_path.get_base_dir().is_empty() && !directories.has(p_path.get_base_dir())) { + if (!p_path.get_base_dir().is_empty() && !directories.has(p_path.get_base_dir() + "/")) { add_directory(p_path.get_base_dir(), 0755, p_modified_time); } @@ -136,8 +136,9 @@ Error ZIPPacker::close_file() { } Error ZIPPacker::add_directory(const String &p_path, BitField p_permissions, uint64_t p_modified_time) { + String path = p_path.ends_with("/") ? p_path : p_path + "/"; ERR_FAIL_COND_V_MSG(fa.is_null(), FAILED, "ZIPPacker must be opened before use."); - ERR_FAIL_COND_V_MSG(directories.has(p_path), ERR_CANT_CREATE, vformat("Directory '%s' already exists.", p_path)); + ERR_FAIL_COND_V_MSG(directories.has(path), ERR_CANT_CREATE, vformat("Directory '%s' already exists.", path)); uint64_t time = p_modified_time; if (time == 0) { @@ -168,7 +169,7 @@ Error ZIPPacker::add_directory(const String &p_path, BitField