Fix non-standard Zip64 extended information fields being generated

This commit is contained in:
Roger Sanders 2025-04-03 11:51:17 +11:00
parent e5431fa6f5
commit 65f34b6f2a

View file

@ -302,7 +302,7 @@ void COutArchive::WriteCentralHeader(const CItemOut &item)
Write16((UInt16)item.Name.Len()); Write16((UInt16)item.Name.Len());
const UInt16 zip64ExtraSize = (UInt16)((isUnPack64 ? 8: 0) + (isPack64 ? 8: 0) + (isPosition64 ? 8: 0)); const UInt16 zip64ExtraSize = (UInt16)((isUnPack64 || isPack64 || isPosition64 ? 16: 0) + (isPosition64 ? 8: 0));
const bool writeNtfs = item.Write_NtfsTime; const bool writeNtfs = item.Write_NtfsTime;
const size_t centralExtraSize = const size_t centralExtraSize =
(isZip64 ? 4 + zip64ExtraSize : 0) (isZip64 ? 4 + zip64ExtraSize : 0)
@ -330,9 +330,7 @@ void COutArchive::WriteCentralHeader(const CItemOut &item)
{ {
Write16(NFileHeader::NExtraID::kZip64); Write16(NFileHeader::NExtraID::kZip64);
Write16(zip64ExtraSize); Write16(zip64ExtraSize);
if (isUnPack64)
Write64(item.Size); Write64(item.Size);
if (isPack64)
Write64(item.PackSize); Write64(item.PackSize);
if (isPosition64) if (isPosition64)
Write64(item.LocalHeaderPos); Write64(item.LocalHeaderPos);