Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2175802/?format=api
{ "id": 2175802, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175802/?format=api", "project": { "id": 18, "url": "http://patchwork.ozlabs.org/api/1.0/projects/18/?format=api", "name": "U-Boot", "link_name": "uboot", "list_id": "u-boot.lists.denx.de", "list_email": "u-boot@lists.denx.de", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20251218232255.3934258-8-trini@konsulko.com>", "date": "2025-12-18T23:10:19", "name": "[RFC,7/9] lzma: Update 21.07 -> 25.01", "commit_ref": null, "pull_url": null, "state": "rfc", "archived": false, "hash": "035bd0b5b979dd57f1967999ebcf7442ebcaca70", "submitter": { "id": 65875, "url": "http://patchwork.ozlabs.org/api/1.0/people/65875/?format=api", "name": "Tom Rini", "email": "trini@konsulko.com" }, "delegate": { "id": 3651, "url": "http://patchwork.ozlabs.org/api/1.0/users/3651/?format=api", "username": "trini", "first_name": "Tom", "last_name": "Rini", "email": "trini@ti.com" }, "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20251218232255.3934258-8-trini@konsulko.com/mbox/", "series": [ { "id": 485929, "url": "http://patchwork.ozlabs.org/api/1.0/series/485929/?format=api", "date": "2025-12-18T23:10:12", "name": "Update lzma to current version of LZMA SDK", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/485929/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2175802/checks/", "tags": {}, "headers": { "Return-Path": "<u-boot-bounces@lists.denx.de>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=konsulko.com header.i=@konsulko.com header.a=rsa-sha256\n header.s=google header.b=L/9nVjmm;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=konsulko.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de", "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=konsulko.com header.i=@konsulko.com\n header.b=\"L/9nVjmm\";\n\tdkim-atps=neutral", "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=konsulko.com", "phobos.denx.de;\n spf=pass smtp.mailfrom=trini@konsulko.com" ], "Received": [ "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dXRZL2hWsz1xty\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 10:24:10 +1100 (AEDT)", "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 58F43838A5;\n\tFri, 19 Dec 2025 00:23:14 +0100 (CET)", "by phobos.denx.de (Postfix, from userid 109)\n id 96A72835C6; Fri, 19 Dec 2025 00:23:10 +0100 (CET)", "from mail-ot1-x334.google.com (mail-ot1-x334.google.com\n [IPv6:2607:f8b0:4864:20::334])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id C1B25833C6\n for <u-boot@lists.denx.de>; Fri, 19 Dec 2025 00:23:06 +0100 (CET)", "by mail-ot1-x334.google.com with SMTP id\n 46e09a7af769-7c7533dbd87so992548a34.2\n for <u-boot@lists.denx.de>; Thu, 18 Dec 2025 15:23:06 -0800 (PST)", "from bill-the-cat.. (fixed-189-203-103-235.totalplay.net.\n [189.203.103.235]) by smtp.gmail.com with ESMTPSA id\n 5614622812f47-457b3cc0928sm295333b6e.10.2025.12.18.15.23.04\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 18 Dec 2025 15:23:04 -0800 (PST)" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de", "X-Spam-Level": "", "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_NONE,SPF_PASS,T_FILL_THIS_FORM_SHORT autolearn=ham\n autolearn_force=no version=3.4.2", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=konsulko.com; s=google; t=1766100185; x=1766704985; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=kyhkY1hbhc2rO50MI8iWtRHg4jjyo+4khwnwoMfeh78=;\n b=L/9nVjmmQ9MC7ELmM1OMO/McoPxF4SSGpjut8PvhKOM+FBXm8dQGDGYaAn5lErZJfI\n ggWlRirnCV1FmiXCPksjX3vPQU58g54PoAom0QnSoNbgfgVN/RU42OadRzm2vhmymrA8\n n5zWt6QuC7NVj+CCTkDsuQL+2ETN4jlAVutig=", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1766100185; x=1766704985;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=kyhkY1hbhc2rO50MI8iWtRHg4jjyo+4khwnwoMfeh78=;\n b=Q+Td7IPqm2mgFyUxV1sFRQ0IYQq9oYTMId/Ob2TShF0IvED/Z9Wsc9lprFeIGhFOpZ\n SGRfx5FjeoiiW9fu+uIbZqrxJIJsWjUBf1BUgcOmcjt3te5fRIfX6UoXXKsabKj02PAv\n dpxLY33iYWGowr79nfq66lEJkmkqmobkJ8spDU2K+yugXt9LbTAxagweZvSjCJN8SfBO\n WD6cZ7TlFLR/gMoD6CENIszLYNuF2DMZGuTQQxWOzuq6JF6OjMkdvPt4e4p7YiFgQYzE\n ECGvk9vQDw1rrz79Hn2CDGHcDAjmfhSa9sZLta4MGCTEyzYxuiqD6vHJJuEI6hiL+5bm\n RgwA==", "X-Gm-Message-State": "AOJu0YyCvycRXPZH6Yk4QCzhfpUajadOrRw8K36vXYnIDbsPIZIoYrll\n K8JPy7l4e0JZMdHoAfOZrtyHOH0MKPRfvx6r7U5qnPup9CieaGI7d2m7TfuyuKBRDOOPP8IfHEa\n CNaPxANU=", "X-Gm-Gg": "AY/fxX7AVmylqbik95MZ+VSjV+Oc2n2ZFhgb55agzFejb7SSg5IPI75N7c4qSe5kOxd\n jlHNrorFzyy+6a4Tgd+SUl+c2GhpB3/Vqwr7c9oFOAc12NgA83l2gyGs4fIEueJjm1iaQ2548a5\n bSphdW6XK8kxc2qvN2QuJSZPlRAfPNOvKtJ1lL57/3VtXkQI7BR2QHKBYVTp4kg0OfZZ4s8XQl1\n RBM2moHVHokFewC/0XEZWttz9z2/OERoFMeaxKA4MX3pB0pN1keJAoPSukwpbo+V9cEI6mqqax6\n Qqf0LFsLNNYlj8a1SlmiD5kwQQF7HPd5mPB0PRiZXCIAa8OyEi2gzpBgh/fsHZ2HQVt3VFU49kN\n DbZWBbraPNZIKfWtYDYoJo4QDDHkzpkgVuEkHyqXI0ZFSSkLyEMM+yCTw9fssoGwTBED9YPfYOj\n bN8Ks0qcHlaymEuFPtFbyLH2j90WsVimWD5Ci93HIIR2gxVgSDdvAFzNY35LUORH4=", "X-Google-Smtp-Source": "\n AGHT+IFsD8jeKwj61hMCqcurrupPsGGR06ZqyYhx/p8VBowr1sZdcn5tJD0cJ3x1+2b9CHOPYJcDTQ==", "X-Received": "by 2002:a05:6808:219a:b0:450:d1ba:151a with SMTP id\n 5614622812f47-457b1e54a38mr710047b6e.13.1766100185105;\n Thu, 18 Dec 2025 15:23:05 -0800 (PST)", "From": "Tom Rini <trini@konsulko.com>", "To": "u-boot@lists.denx.de", "Cc": "Darek <x64x6a@gmail.com>", "Subject": "[RFC PATCH 7/9] lzma: Update 21.07 -> 25.01", "Date": "Thu, 18 Dec 2025 17:10:19 -0600", "Message-ID": "<20251218232255.3934258-8-trini@konsulko.com>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20251218232255.3934258-1-trini@konsulko.com>", "References": "<20251218232255.3934258-1-trini@konsulko.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "u-boot@lists.denx.de", "X-Mailman-Version": "2.1.39", "Precedence": "list", "List-Id": "U-Boot discussion <u-boot.lists.denx.de>", "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>", "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>", "List-Post": "<mailto:u-boot@lists.denx.de>", "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>", "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>", "Errors-To": "u-boot-bounces@lists.denx.de", "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>", "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de", "X-Virus-Status": "Clean" }, "content": "These are only upstream changes and nothing local.\n\nSigned-off-by: Tom Rini <trini@konsulko.com>\n---\n lib/lzma/7zTypes.h | 270 ++++++++++++++++++++++++++++----------------\n lib/lzma/Compiler.h | 247 ++++++++++++++++++++++++++++++++++++----\n lib/lzma/LzmaDec.c | 190 +++++++++++++++----------------\n lib/lzma/LzmaDec.h | 17 +--\n lib/lzma/Makefile | 4 +-\n lib/lzma/Precomp.h | 127 ++++++++++++++++++++-\n 6 files changed, 626 insertions(+), 229 deletions(-)", "diff": "diff --git a/lib/lzma/7zTypes.h b/lib/lzma/7zTypes.h\nindex 0b1fbb637793..9a605468643b 100644\n--- a/lib/lzma/7zTypes.h\n+++ b/lib/lzma/7zTypes.h\n@@ -1,8 +1,8 @@\n /* 7zTypes.h -- Basic types\n-2021-12-25 : Igor Pavlov : Public domain */\n+2024-01-24 : Igor Pavlov : Public domain */\n \n-#ifndef __7Z_TYPES_H\n-#define __7Z_TYPES_H\n+#ifndef ZIP7_7Z_TYPES_H\n+#define ZIP7_7Z_TYPES_H\n \n #ifdef _WIN32\n /* #include <windows.h> */\n@@ -52,6 +52,11 @@ typedef int SRes;\n #define MY_ALIGN(n)\n #endif\n #else\n+ /*\n+ // C11/C++11:\n+ #include <stdalign.h>\n+ #define MY_ALIGN(n) alignas(n)\n+ */\n #define MY_ALIGN(n) __attribute__ ((aligned(n)))\n #endif\n \n@@ -62,7 +67,7 @@ typedef int SRes;\n typedef unsigned WRes;\n #define MY_SRes_HRESULT_FROM_WRes(x) HRESULT_FROM_WIN32(x)\n \n-// #define MY_HRES_ERROR__INTERNAL_ERROR MY_SRes_HRESULT_FROM_WRes(ERROR_INTERNAL_ERROR)\n+// #define MY_HRES_ERROR_INTERNAL_ERROR MY_SRes_HRESULT_FROM_WRes(ERROR_INTERNAL_ERROR)\n \n #else // _WIN32\n \n@@ -70,13 +75,13 @@ typedef unsigned WRes;\n typedef int WRes;\n \n // (FACILITY_ERRNO = 0x800) is 7zip's FACILITY constant to represent (errno) errors in HRESULT\n-#define MY__FACILITY_ERRNO 0x800\n-#define MY__FACILITY_WIN32 7\n-#define MY__FACILITY__WRes MY__FACILITY_ERRNO\n+#define MY_FACILITY_ERRNO 0x800\n+#define MY_FACILITY_WIN32 7\n+#define MY_FACILITY_WRes MY_FACILITY_ERRNO\n \n #define MY_HRESULT_FROM_errno_CONST_ERROR(x) ((HRESULT)( \\\n ( (HRESULT)(x) & 0x0000FFFF) \\\n- | (MY__FACILITY__WRes << 16) \\\n+ | (MY_FACILITY_WRes << 16) \\\n | (HRESULT)0x80000000 ))\n \n #define MY_SRes_HRESULT_FROM_WRes(x) \\\n@@ -120,17 +125,17 @@ typedef int WRes;\n #define ERROR_INVALID_REPARSE_DATA ((HRESULT)0x80071128L)\n #define ERROR_REPARSE_TAG_INVALID ((HRESULT)0x80071129L)\n \n-// if (MY__FACILITY__WRes != FACILITY_WIN32),\n+// if (MY_FACILITY_WRes != FACILITY_WIN32),\n // we use FACILITY_WIN32 for COM errors:\n #define E_OUTOFMEMORY ((HRESULT)0x8007000EL)\n #define E_INVALIDARG ((HRESULT)0x80070057L)\n-#define MY__E_ERROR_NEGATIVE_SEEK ((HRESULT)0x80070083L)\n+#define MY_E_ERROR_NEGATIVE_SEEK ((HRESULT)0x80070083L)\n \n /*\n // we can use FACILITY_ERRNO for some COM errors, that have errno equivalents:\n #define E_OUTOFMEMORY MY_HRESULT_FROM_errno_CONST_ERROR(ENOMEM)\n #define E_INVALIDARG MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL)\n-#define MY__E_ERROR_NEGATIVE_SEEK MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL)\n+#define MY_E_ERROR_NEGATIVE_SEEK MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL)\n */\n \n // gcc / clang : (sizeof(long) == sizeof(void*)) in 32/64 bits\n@@ -162,18 +167,18 @@ typedef unsigned long UINT_PTR;\n \n \n #ifndef RINOK\n-#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }\n+#define RINOK(x) { const int _result_ = (x); if (_result_ != 0) return _result_; }\n #endif\n \n #ifndef RINOK_WRes\n-#define RINOK_WRes(x) { WRes __result__ = (x); if (__result__ != 0) return __result__; }\n+#define RINOK_WRes(x) { const WRes _result_ = (x); if (_result_ != 0) return _result_; }\n #endif\n \n typedef unsigned char Byte;\n typedef short Int16;\n typedef unsigned short UInt16;\n \n-#ifdef _LZMA_UINT32_IS_ULONG\n+#ifdef Z7_DECL_Int32_AS_long\n typedef long Int32;\n typedef unsigned long UInt32;\n #else\n@@ -214,37 +219,51 @@ typedef size_t SIZE_T;\n #endif // _WIN32\n \n \n-#define MY_HRES_ERROR__INTERNAL_ERROR ((HRESULT)0x8007054FL)\n+#define MY_HRES_ERROR_INTERNAL_ERROR ((HRESULT)0x8007054FL)\n \n \n-#ifdef _SZ_NO_INT_64\n-\n-/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.\n- NOTES: Some code will work incorrectly in that case! */\n+#ifdef Z7_DECL_Int64_AS_long\n \n typedef long Int64;\n typedef unsigned long UInt64;\n \n #else\n \n-#if defined(_MSC_VER) || defined(__BORLANDC__)\n+#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__clang__)\n typedef __int64 Int64;\n typedef unsigned __int64 UInt64;\n-#define UINT64_CONST(n) n\n+#else\n+#if defined(__clang__) || defined(__GNUC__)\n+#include <stdint.h>\n+typedef int64_t Int64;\n+typedef uint64_t UInt64;\n #else\n typedef long long int Int64;\n typedef unsigned long long int UInt64;\n-#define UINT64_CONST(n) n ## ULL\n+// #define UINT64_CONST(n) n ## ULL\n+#endif\n #endif\n \n #endif\n \n-#ifdef _LZMA_NO_SYSTEM_SIZE_T\n-typedef UInt32 SizeT;\n+#define UINT64_CONST(n) n\n+\n+\n+#ifdef Z7_DECL_SizeT_AS_unsigned_int\n+typedef unsigned int SizeT;\n #else\n typedef size_t SizeT;\n #endif\n \n+/*\n+#if (defined(_MSC_VER) && _MSC_VER <= 1200)\n+typedef size_t MY_uintptr_t;\n+#else\n+#include <stdint.h>\n+typedef uintptr_t MY_uintptr_t;\n+#endif\n+*/\n+\n typedef int BoolInt;\n /* typedef BoolInt Bool; */\n #define True 1\n@@ -252,23 +271,23 @@ typedef int BoolInt;\n \n \n #ifdef _WIN32\n-#define MY_STD_CALL __stdcall\n+#define Z7_STDCALL __stdcall\n #else\n-#define MY_STD_CALL\n+#define Z7_STDCALL\n #endif\n \n #ifdef _MSC_VER\n \n #if _MSC_VER >= 1300\n-#define MY_NO_INLINE __declspec(noinline)\n+#define Z7_NO_INLINE __declspec(noinline)\n #else\n-#define MY_NO_INLINE\n+#define Z7_NO_INLINE\n #endif\n \n-#define MY_FORCE_INLINE __forceinline\n+#define Z7_FORCE_INLINE __forceinline\n \n-#define MY_CDECL __cdecl\n-#define MY_FAST_CALL __fastcall\n+#define Z7_CDECL __cdecl\n+#define Z7_FASTCALL __fastcall\n \n #else // _MSC_VER\n \n@@ -276,27 +295,25 @@ typedef int BoolInt;\n || (defined(__clang__) && (__clang_major__ >= 4)) \\\n || defined(__INTEL_COMPILER) \\\n || defined(__xlC__)\n-#define MY_NO_INLINE __attribute__((noinline))\n-// #define MY_FORCE_INLINE __attribute__((always_inline)) inline\n+#define Z7_NO_INLINE __attribute__((noinline))\n+#define Z7_FORCE_INLINE __attribute__((always_inline)) inline\n #else\n-#define MY_NO_INLINE\n+#define Z7_NO_INLINE\n+#define Z7_FORCE_INLINE\n #endif\n \n-#define MY_FORCE_INLINE\n-\n-\n-#define MY_CDECL\n+#define Z7_CDECL\n \n #if defined(_M_IX86) \\\n || defined(__i386__)\n-// #define MY_FAST_CALL __attribute__((fastcall))\n-// #define MY_FAST_CALL __attribute__((cdecl))\n-#define MY_FAST_CALL\n+// #define Z7_FASTCALL __attribute__((fastcall))\n+// #define Z7_FASTCALL __attribute__((cdecl))\n+#define Z7_FASTCALL\n #elif defined(MY_CPU_AMD64)\n-// #define MY_FAST_CALL __attribute__((ms_abi))\n-#define MY_FAST_CALL\n+// #define Z7_FASTCALL __attribute__((ms_abi))\n+#define Z7_FASTCALL\n #else\n-#define MY_FAST_CALL\n+#define Z7_FASTCALL\n #endif\n \n #endif // _MSC_VER\n@@ -304,41 +321,49 @@ typedef int BoolInt;\n \n /* The following interfaces use first parameter as pointer to structure */\n \n-typedef struct IByteIn IByteIn;\n-struct IByteIn\n+// #define Z7_C_IFACE_CONST_QUAL\n+#define Z7_C_IFACE_CONST_QUAL const\n+\n+#define Z7_C_IFACE_DECL(a) \\\n+ struct a ## _; \\\n+ typedef Z7_C_IFACE_CONST_QUAL struct a ## _ * a ## Ptr; \\\n+ typedef struct a ## _ a; \\\n+ struct a ## _\n+\n+\n+Z7_C_IFACE_DECL (IByteIn)\n {\n- Byte (*Read)(const IByteIn *p); /* reads one byte, returns 0 in case of EOF or error */\n+ Byte (*Read)(IByteInPtr p); /* reads one byte, returns 0 in case of EOF or error */\n };\n #define IByteIn_Read(p) (p)->Read(p)\n \n \n-typedef struct IByteOut IByteOut;\n-struct IByteOut\n+Z7_C_IFACE_DECL (IByteOut)\n {\n- void (*Write)(const IByteOut *p, Byte b);\n+ void (*Write)(IByteOutPtr p, Byte b);\n };\n #define IByteOut_Write(p, b) (p)->Write(p, b)\n \n \n-typedef struct ISeqInStream ISeqInStream;\n-struct ISeqInStream\n+Z7_C_IFACE_DECL (ISeqInStream)\n {\n- SRes (*Read)(const ISeqInStream *p, void *buf, size_t *size);\n+ SRes (*Read)(ISeqInStreamPtr p, void *buf, size_t *size);\n /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.\n (output(*size) < input(*size)) is allowed */\n };\n #define ISeqInStream_Read(p, buf, size) (p)->Read(p, buf, size)\n \n+/* try to read as much as avail in stream and limited by (*processedSize) */\n+SRes SeqInStream_ReadMax(ISeqInStreamPtr stream, void *buf, size_t *processedSize);\n /* it can return SZ_ERROR_INPUT_EOF */\n-SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size);\n-SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType);\n-SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf);\n+// SRes SeqInStream_Read(ISeqInStreamPtr stream, void *buf, size_t size);\n+// SRes SeqInStream_Read2(ISeqInStreamPtr stream, void *buf, size_t size, SRes errorType);\n+SRes SeqInStream_ReadByte(ISeqInStreamPtr stream, Byte *buf);\n \n \n-typedef struct ISeqOutStream ISeqOutStream;\n-struct ISeqOutStream\n+Z7_C_IFACE_DECL (ISeqOutStream)\n {\n- size_t (*Write)(const ISeqOutStream *p, const void *buf, size_t size);\n+ size_t (*Write)(ISeqOutStreamPtr p, const void *buf, size_t size);\n /* Returns: result - the number of actually written bytes.\n (result < size) means error */\n };\n@@ -352,29 +377,26 @@ typedef enum\n } ESzSeek;\n \n \n-typedef struct ISeekInStream ISeekInStream;\n-struct ISeekInStream\n+Z7_C_IFACE_DECL (ISeekInStream)\n {\n- SRes (*Read)(const ISeekInStream *p, void *buf, size_t *size); /* same as ISeqInStream::Read */\n- SRes (*Seek)(const ISeekInStream *p, Int64 *pos, ESzSeek origin);\n+ SRes (*Read)(ISeekInStreamPtr p, void *buf, size_t *size); /* same as ISeqInStream::Read */\n+ SRes (*Seek)(ISeekInStreamPtr p, Int64 *pos, ESzSeek origin);\n };\n #define ISeekInStream_Read(p, buf, size) (p)->Read(p, buf, size)\n #define ISeekInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin)\n \n \n-typedef struct ILookInStream ILookInStream;\n-struct ILookInStream\n+Z7_C_IFACE_DECL (ILookInStream)\n {\n- SRes (*Look)(const ILookInStream *p, const void **buf, size_t *size);\n+ SRes (*Look)(ILookInStreamPtr p, const void **buf, size_t *size);\n /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.\n (output(*size) > input(*size)) is not allowed\n (output(*size) < input(*size)) is allowed */\n- SRes (*Skip)(const ILookInStream *p, size_t offset);\n+ SRes (*Skip)(ILookInStreamPtr p, size_t offset);\n /* offset must be <= output(*size) of Look */\n-\n- SRes (*Read)(const ILookInStream *p, void *buf, size_t *size);\n+ SRes (*Read)(ILookInStreamPtr p, void *buf, size_t *size);\n /* reads directly (without buffer). It's same as ISeqInStream::Read */\n- SRes (*Seek)(const ILookInStream *p, Int64 *pos, ESzSeek origin);\n+ SRes (*Seek)(ILookInStreamPtr p, Int64 *pos, ESzSeek origin);\n };\n \n #define ILookInStream_Look(p, buf, size) (p)->Look(p, buf, size)\n@@ -383,19 +405,18 @@ struct ILookInStream\n #define ILookInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin)\n \n \n-SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size);\n-SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset);\n+SRes LookInStream_LookRead(ILookInStreamPtr stream, void *buf, size_t *size);\n+SRes LookInStream_SeekTo(ILookInStreamPtr stream, UInt64 offset);\n \n /* reads via ILookInStream::Read */\n-SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType);\n-SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size);\n-\n+SRes LookInStream_Read2(ILookInStreamPtr stream, void *buf, size_t size, SRes errorType);\n+SRes LookInStream_Read(ILookInStreamPtr stream, void *buf, size_t size);\n \n \n typedef struct\n {\n ILookInStream vt;\n- const ISeekInStream *realStream;\n+ ISeekInStreamPtr realStream;\n \n size_t pos;\n size_t size; /* it's data size */\n@@ -407,13 +428,13 @@ typedef struct\n \n void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead);\n \n-#define LookToRead2_Init(p) { (p)->pos = (p)->size = 0; }\n+#define LookToRead2_INIT(p) { (p)->pos = (p)->size = 0; }\n \n \n typedef struct\n {\n ISeqInStream vt;\n- const ILookInStream *realStream;\n+ ILookInStreamPtr realStream;\n } CSecToLook;\n \n void SecToLook_CreateVTable(CSecToLook *p);\n@@ -423,20 +444,19 @@ void SecToLook_CreateVTable(CSecToLook *p);\n typedef struct\n {\n ISeqInStream vt;\n- const ILookInStream *realStream;\n+ ILookInStreamPtr realStream;\n } CSecToRead;\n \n void SecToRead_CreateVTable(CSecToRead *p);\n \n \n-typedef struct ICompressProgress ICompressProgress;\n-\n-struct ICompressProgress\n+Z7_C_IFACE_DECL (ICompressProgress)\n {\n- SRes (*Progress)(const ICompressProgress *p, UInt64 inSize, UInt64 outSize);\n+ SRes (*Progress)(ICompressProgressPtr p, UInt64 inSize, UInt64 outSize);\n /* Returns: result. (result != SZ_OK) means break.\n Value (UInt64)(Int64)-1 for size means unknown value. */\n };\n+\n #define ICompressProgress_Progress(p, inSize, outSize) (p)->Progress(p, inSize, outSize)\n \n \n@@ -474,13 +494,13 @@ struct ISzAlloc\n \n \n \n-#ifndef MY_container_of\n+#ifndef Z7_container_of\n \n /*\n-#define MY_container_of(ptr, type, m) container_of(ptr, type, m)\n-#define MY_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m)\n-#define MY_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m)))\n-#define MY_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m))))\n+#define Z7_container_of(ptr, type, m) container_of(ptr, type, m)\n+#define Z7_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m)\n+#define Z7_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m)))\n+#define Z7_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m))))\n */\n \n /*\n@@ -489,24 +509,64 @@ struct ISzAlloc\n GCC 4.8.1 : classes with non-public variable members\"\n */\n \n-#define MY_container_of(ptr, type, m) ((type *)(void *)((char *)(void *)(1 ? (ptr) : &((type *)0)->m) - MY_offsetof(type, m)))\n+#define Z7_container_of(ptr, type, m) \\\n+ ((type *)(void *)((char *)(void *) \\\n+ (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m)))\n \n-#endif\n-\n-#define CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(void *)(ptr))\n+#define Z7_container_of_CONST(ptr, type, m) \\\n+ ((const type *)(const void *)((const char *)(const void *) \\\n+ (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m)))\n \n /*\n-#define CONTAINER_FROM_VTBL(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)\n+#define Z7_container_of_NON_CONST_FROM_CONST(ptr, type, m) \\\n+ ((type *)(void *)(const void *)((const char *)(const void *) \\\n+ (1 ? (ptr) : &((type *)NULL)->m) - MY_offsetof(type, m)))\n */\n-#define CONTAINER_FROM_VTBL(ptr, type, m) MY_container_of(ptr, type, m)\n \n-#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)\n+#endif\n+\n+#define Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(void *)(ptr))\n+\n+// #define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)\n+#define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_container_of(ptr, type, m)\n+// #define Z7_CONTAINER_FROM_VTBL(ptr, type, m) Z7_container_of_NON_CONST_FROM_CONST(ptr, type, m)\n+\n+#define Z7_CONTAINER_FROM_VTBL_CONST(ptr, type, m) Z7_container_of_CONST(ptr, type, m)\n+\n+#define Z7_CONTAINER_FROM_VTBL_CLS(ptr, type, m) Z7_CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)\n /*\n-#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL(ptr, type, m)\n+#define Z7_CONTAINER_FROM_VTBL_CLS(ptr, type, m) Z7_CONTAINER_FROM_VTBL(ptr, type, m)\n */\n+#if defined (__clang__) || defined(__GNUC__)\n+#define Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL \\\n+ _Pragma(\"GCC diagnostic push\") \\\n+ _Pragma(\"GCC diagnostic ignored \\\"-Wcast-qual\\\"\")\n+#define Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL \\\n+ _Pragma(\"GCC diagnostic pop\")\n+#else\n+#define Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL\n+#define Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL\n+#endif\n+\n+#define Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR(ptr, type, m, p) \\\n+ Z7_DIAGNOSTIC_IGNORE_BEGIN_CAST_QUAL \\\n+ type *p = Z7_CONTAINER_FROM_VTBL(ptr, type, m); \\\n+ Z7_DIAGNOSTIC_IGNORE_END_CAST_QUAL\n+\n+#define Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR_pp_vt_p(type) \\\n+ Z7_CONTAINER_FROM_VTBL_TO_DECL_VAR(pp, type, vt, p)\n+\n \n+// #define ZIP7_DECLARE_HANDLE(name) typedef void *name;\n+#define Z7_DECLARE_HANDLE(name) struct name##_dummy{int unused;}; typedef struct name##_dummy *name;\n+\n+\n+#define Z7_memset_0_ARRAY(a) memset((a), 0, sizeof(a))\n+\n+#ifndef Z7_ARRAY_SIZE\n+#define Z7_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))\n+#endif\n \n-#define MY_memset_0_ARRAY(a) memset((a), 0, sizeof(a))\n \n #ifdef _WIN32\n \n@@ -524,6 +584,22 @@ struct ISzAlloc\n \n #endif\n \n+#define k_PropVar_TimePrec_0 0\n+#define k_PropVar_TimePrec_Unix 1\n+#define k_PropVar_TimePrec_DOS 2\n+#define k_PropVar_TimePrec_HighPrec 3\n+#define k_PropVar_TimePrec_Base 16\n+#define k_PropVar_TimePrec_100ns (k_PropVar_TimePrec_Base + 7)\n+#define k_PropVar_TimePrec_1ns (k_PropVar_TimePrec_Base + 9)\n+\n EXTERN_C_END\n \n #endif\n+\n+/*\n+#ifndef Z7_ST\n+#ifdef _7ZIP_ST\n+#define Z7_ST\n+#endif\n+#endif\n+*/\ndiff --git a/lib/lzma/Compiler.h b/lib/lzma/Compiler.h\nindex a9816fa5ad01..b266b277bdb3 100644\n--- a/lib/lzma/Compiler.h\n+++ b/lib/lzma/Compiler.h\n@@ -1,12 +1,105 @@\n-/* Compiler.h\n-2021-01-05 : Igor Pavlov : Public domain */\n+/* Compiler.h : Compiler specific defines and pragmas\n+: Igor Pavlov : Public domain */\n \n-#ifndef __7Z_COMPILER_H\n-#define __7Z_COMPILER_H\n+#ifndef ZIP7_INC_COMPILER_H\n+#define ZIP7_INC_COMPILER_H\n \n- #ifdef __clang__\n- #pragma clang diagnostic ignored \"-Wunused-private-field\"\n+#if defined(__clang__)\n+# define Z7_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)\n+#endif\n+#if defined(__clang__) && defined(__apple_build_version__)\n+# define Z7_APPLE_CLANG_VERSION Z7_CLANG_VERSION\n+#elif defined(__clang__)\n+# define Z7_LLVM_CLANG_VERSION Z7_CLANG_VERSION\n+#elif defined(__GNUC__)\n+# define Z7_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)\n+#endif\n+\n+#ifdef _MSC_VER\n+#if !defined(__clang__) && !defined(__GNUC__)\n+#define Z7_MSC_VER_ORIGINAL _MSC_VER\n+#endif\n+#endif\n+\n+#if defined(__MINGW32__) || defined(__MINGW64__)\n+#define Z7_MINGW\n+#endif\n+\n+#if defined(__LCC__) && (defined(__MCST__) || defined(__e2k__))\n+#define Z7_MCST_LCC\n+#define Z7_MCST_LCC_VERSION (__LCC__ * 100 + __LCC_MINOR__)\n+#endif\n+\n+/*\n+#if defined(__AVX2__) \\\n+ || defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40900) \\\n+ || defined(Z7_APPLE_CLANG_VERSION) && (Z7_APPLE_CLANG_VERSION >= 40600) \\\n+ || defined(Z7_LLVM_CLANG_VERSION) && (Z7_LLVM_CLANG_VERSION >= 30100) \\\n+ || defined(Z7_MSC_VER_ORIGINAL) && (Z7_MSC_VER_ORIGINAL >= 1800) \\\n+ || defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1400)\n+ #define Z7_COMPILER_AVX2_SUPPORTED\n #endif\n+#endif\n+*/\n+\n+// #pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n+\n+#ifdef __clang__\n+// padding size of '' with 4 bytes to alignment boundary\n+#pragma GCC diagnostic ignored \"-Wpadded\"\n+\n+#if defined(Z7_LLVM_CLANG_VERSION) && (__clang_major__ == 13) \\\n+ && defined(__FreeBSD__)\n+// freebsd:\n+#pragma GCC diagnostic ignored \"-Wexcess-padding\"\n+#endif\n+\n+#if __clang_major__ >= 16\n+#pragma GCC diagnostic ignored \"-Wunsafe-buffer-usage\"\n+#endif\n+\n+#if __clang_major__ == 13\n+#if defined(__SIZEOF_POINTER__) && (__SIZEOF_POINTER__ == 16)\n+// cheri\n+#pragma GCC diagnostic ignored \"-Wcapability-to-integer-cast\"\n+#endif\n+#endif\n+\n+#if __clang_major__ == 13\n+ // for <arm_neon.h>\n+ #pragma GCC diagnostic ignored \"-Wreserved-identifier\"\n+#endif\n+\n+#endif // __clang__\n+\n+#if defined(_WIN32) && defined(__clang__) && __clang_major__ >= 16\n+// #pragma GCC diagnostic ignored \"-Wcast-function-type-strict\"\n+#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION \\\n+ _Pragma(\"GCC diagnostic ignored \\\"-Wcast-function-type-strict\\\"\")\n+#else\n+#define Z7_DIAGNOSTIC_IGNORE_CAST_FUNCTION\n+#endif\n+\n+typedef void (*Z7_void_Function)(void);\n+#if defined(__clang__) || defined(__GNUC__)\n+#define Z7_CAST_FUNC_C (Z7_void_Function)\n+#elif defined(_MSC_VER) && _MSC_VER > 1920\n+#define Z7_CAST_FUNC_C (void *)\n+// #pragma warning(disable : 4191) // 'type cast': unsafe conversion from 'FARPROC' to 'void (__cdecl *)()'\n+#else\n+#define Z7_CAST_FUNC_C\n+#endif\n+/*\n+#if (defined(__GNUC__) && (__GNUC__ >= 8)) || defined(__clang__)\n+ // #pragma GCC diagnostic ignored \"-Wcast-function-type\"\n+#endif\n+*/\n+#ifdef __GNUC__\n+#if defined(Z7_GCC_VERSION) && (Z7_GCC_VERSION >= 40000) && (Z7_GCC_VERSION < 70000)\n+#pragma GCC diagnostic ignored \"-Wstrict-aliasing\"\n+#endif\n+#endif\n+\n \n #ifdef _MSC_VER\n \n@@ -17,24 +110,134 @@\n #pragma warning(disable : 4214) // nonstandard extension used : bit field types other than int\n #endif\n \n- #if _MSC_VER >= 1300\n- #pragma warning(disable : 4996) // This function or variable may be unsafe\n- #else\n- #pragma warning(disable : 4511) // copy constructor could not be generated\n- #pragma warning(disable : 4512) // assignment operator could not be generated\n- #pragma warning(disable : 4514) // unreferenced inline function has been removed\n- #pragma warning(disable : 4702) // unreachable code\n- #pragma warning(disable : 4710) // not inlined\n- #pragma warning(disable : 4714) // function marked as __forceinline not inlined\n- #pragma warning(disable : 4786) // identifier was truncated to '255' characters in the debug information\n- #endif\n+#if defined(_MSC_VER) && _MSC_VER >= 1800\n+#pragma warning(disable : 4464) // relative include path contains '..'\n+#endif\n \n- #ifdef __clang__\n- #pragma clang diagnostic ignored \"-Wdeprecated-declarations\"\n- #pragma clang diagnostic ignored \"-Wmicrosoft-exception-spec\"\n- // #pragma clang diagnostic ignored \"-Wreserved-id-macro\"\n- #endif\n+// == 1200 : -O1 : for __forceinline\n+// >= 1900 : -O1 : for printf\n+#pragma warning(disable : 4710) // function not inlined\n+\n+#if _MSC_VER < 1900\n+// winnt.h: 'Int64ShllMod32'\n+#pragma warning(disable : 4514) // unreferenced inline function has been removed\n+#endif\n+ \n+#if _MSC_VER < 1300\n+// #pragma warning(disable : 4702) // unreachable code\n+// Bra.c : -O1:\n+#pragma warning(disable : 4714) // function marked as __forceinline not inlined\n+#endif\n+\n+/*\n+#if _MSC_VER > 1400 && _MSC_VER <= 1900\n+// strcat: This function or variable may be unsafe\n+// sysinfoapi.h: kit10: GetVersion was declared deprecated\n+#pragma warning(disable : 4996)\n+#endif\n+*/\n+\n+#if _MSC_VER > 1200\n+// -Wall warnings\n+\n+#pragma warning(disable : 4711) // function selected for automatic inline expansion\n+#pragma warning(disable : 4820) // '2' bytes padding added after data member\n+\n+#if _MSC_VER >= 1400 && _MSC_VER < 1920\n+// 1400: string.h: _DBG_MEMCPY_INLINE_\n+// 1600 - 191x : smmintrin.h __cplusplus'\n+// is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'\n+#pragma warning(disable : 4668)\n+\n+// 1400 - 1600 : WinDef.h : 'FARPROC' :\n+// 1900 - 191x : immintrin.h: _readfsbase_u32\n+// no function prototype given : converting '()' to '(void)'\n+#pragma warning(disable : 4255)\n+#endif\n+\n+#if _MSC_VER >= 1914\n+// Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified\n+#pragma warning(disable : 5045)\n+#endif\n+\n+#endif // _MSC_VER > 1200\n+#endif // _MSC_VER\n+\n+\n+#if defined(__clang__) && (__clang_major__ >= 4)\n+ #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \\\n+ _Pragma(\"clang loop unroll(disable)\") \\\n+ _Pragma(\"clang loop vectorize(disable)\")\n+ #define Z7_ATTRIB_NO_VECTORIZE\n+#elif defined(__GNUC__) && (__GNUC__ >= 5) \\\n+ && (!defined(Z7_MCST_LCC_VERSION) || (Z7_MCST_LCC_VERSION >= 12610))\n+ #define Z7_ATTRIB_NO_VECTORIZE __attribute__((optimize(\"no-tree-vectorize\")))\n+ // __attribute__((optimize(\"no-unroll-loops\")));\n+ #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE\n+#elif defined(_MSC_VER) && (_MSC_VER >= 1920)\n+ #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE \\\n+ _Pragma(\"loop( no_vector )\")\n+ #define Z7_ATTRIB_NO_VECTORIZE\n+#else\n+ #define Z7_PRAGMA_OPT_DISABLE_LOOP_UNROLL_VECTORIZE\n+ #define Z7_ATTRIB_NO_VECTORIZE\n+#endif\n+\n+#if defined(Z7_MSC_VER_ORIGINAL) && (Z7_MSC_VER_ORIGINAL >= 1920)\n+ #define Z7_PRAGMA_OPTIMIZE_FOR_CODE_SIZE _Pragma(\"optimize ( \\\"s\\\", on )\")\n+ #define Z7_PRAGMA_OPTIMIZE_DEFAULT _Pragma(\"optimize ( \\\"\\\", on )\")\n+#else\n+ #define Z7_PRAGMA_OPTIMIZE_FOR_CODE_SIZE\n+ #define Z7_PRAGMA_OPTIMIZE_DEFAULT\n+#endif\n+\n+\n+\n+#if defined(MY_CPU_X86_OR_AMD64) && ( \\\n+ defined(__clang__) && (__clang_major__ >= 4) \\\n+ || defined(__GNUC__) && (__GNUC__ >= 5))\n+ #define Z7_ATTRIB_NO_SSE __attribute__((__target__(\"no-sse\")))\n+#else\n+ #define Z7_ATTRIB_NO_SSE\n+#endif\n+\n+#define Z7_ATTRIB_NO_VECTOR \\\n+ Z7_ATTRIB_NO_VECTORIZE \\\n+ Z7_ATTRIB_NO_SSE\n+\n+\n+#if defined(__clang__) && (__clang_major__ >= 8) \\\n+ || defined(__GNUC__) && (__GNUC__ >= 1000) \\\n+ /* || defined(_MSC_VER) && (_MSC_VER >= 1920) */\n+ // GCC is not good for __builtin_expect()\n+ #define Z7_LIKELY(x) (__builtin_expect((x), 1))\n+ #define Z7_UNLIKELY(x) (__builtin_expect((x), 0))\n+ // #define Z7_unlikely [[unlikely]]\n+ // #define Z7_likely [[likely]]\n+#else\n+ #define Z7_LIKELY(x) (x)\n+ #define Z7_UNLIKELY(x) (x)\n+ // #define Z7_likely\n+#endif\n+\n+\n+#if (defined(Z7_CLANG_VERSION) && (Z7_CLANG_VERSION >= 30600))\n+\n+#if (Z7_CLANG_VERSION < 130000)\n+#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \\\n+ _Pragma(\"GCC diagnostic push\") \\\n+ _Pragma(\"GCC diagnostic ignored \\\"-Wreserved-id-macro\\\"\")\n+#else\n+#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER \\\n+ _Pragma(\"GCC diagnostic push\") \\\n+ _Pragma(\"GCC diagnostic ignored \\\"-Wreserved-macro-identifier\\\"\")\n+#endif\n \n+#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER \\\n+ _Pragma(\"GCC diagnostic pop\")\n+#else\n+#define Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER\n+#define Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER\n #endif\n \n #define UNUSED_VAR(x) (void)x;\ndiff --git a/lib/lzma/LzmaDec.c b/lib/lzma/LzmaDec.c\nindex a27f3c3b42a3..da2ec5336279 100644\n--- a/lib/lzma/LzmaDec.c\n+++ b/lib/lzma/LzmaDec.c\n@@ -1,5 +1,5 @@\n /* LzmaDec.c -- LZMA Decoder\n-2021-04-01 : Igor Pavlov : Public domain */\n+2023-04-07 : Igor Pavlov : Public domain */\n \n #include \"Precomp.h\"\n \n@@ -10,15 +10,15 @@\n /* #include \"CpuArch.h\" */\n #include \"LzmaDec.h\"\n \n-#define kNumTopBits 24\n-#define kTopValue ((UInt32)1 << kNumTopBits)\n+// #define kNumTopBits 24\n+#define kTopValue ((UInt32)1 << 24)\n \n #define kNumBitModelTotalBits 11\n #define kBitModelTotal (1 << kNumBitModelTotalBits)\n \n #define RC_INIT_SIZE 5\n \n-#ifndef _LZMA_DEC_OPT\n+#ifndef Z7_LZMA_DEC_OPT\n \n #define kNumMoveBits 5\n #define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); }\n@@ -27,14 +27,14 @@\n #define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits));\n #define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits));\n #define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \\\n- { UPDATE_0(p); i = (i + i); A0; } else \\\n- { UPDATE_1(p); i = (i + i) + 1; A1; }\n+ { UPDATE_0(p) i = (i + i); A0; } else \\\n+ { UPDATE_1(p) i = (i + i) + 1; A1; }\n \n #define TREE_GET_BIT(probs, i) { GET_BIT2(probs + i, i, ;, ;); }\n \n #define REV_BIT(p, i, A0, A1) IF_BIT_0(p + i) \\\n- { UPDATE_0(p + i); A0; } else \\\n- { UPDATE_1(p + i); A1; }\n+ { UPDATE_0(p + i) A0; } else \\\n+ { UPDATE_1(p + i) A1; }\n #define REV_BIT_VAR( p, i, m) REV_BIT(p, i, i += m; m += m, m += m; i += m; )\n #define REV_BIT_CONST(p, i, m) REV_BIT(p, i, i += m; , i += m * 2; )\n #define REV_BIT_LAST( p, i, m) REV_BIT(p, i, i -= m , ; )\n@@ -42,19 +42,19 @@\n #define TREE_DECODE(probs, limit, i) \\\n { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; }\n \n-/* #define _LZMA_SIZE_OPT */\n+/* #define Z7_LZMA_SIZE_OPT */\n \n-#ifdef _LZMA_SIZE_OPT\n+#ifdef Z7_LZMA_SIZE_OPT\n #define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i)\n #else\n #define TREE_6_DECODE(probs, i) \\\n { i = 1; \\\n- TREE_GET_BIT(probs, i); \\\n- TREE_GET_BIT(probs, i); \\\n- TREE_GET_BIT(probs, i); \\\n- TREE_GET_BIT(probs, i); \\\n- TREE_GET_BIT(probs, i); \\\n- TREE_GET_BIT(probs, i); \\\n+ TREE_GET_BIT(probs, i) \\\n+ TREE_GET_BIT(probs, i) \\\n+ TREE_GET_BIT(probs, i) \\\n+ TREE_GET_BIT(probs, i) \\\n+ TREE_GET_BIT(probs, i) \\\n+ TREE_GET_BIT(probs, i) \\\n i -= 0x40; }\n #endif\n \n@@ -66,25 +66,25 @@\n probLit = prob + (offs + bit + symbol); \\\n GET_BIT2(probLit, symbol, offs ^= bit; , ;)\n \n-#endif // _LZMA_DEC_OPT\n+#endif // Z7_LZMA_DEC_OPT\n \n \n #define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_INPUT_EOF; range <<= 8; code = (code << 8) | (*buf++); }\n \n-#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)\n+#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound)\n #define UPDATE_0_CHECK range = bound;\n #define UPDATE_1_CHECK range -= bound; code -= bound;\n #define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \\\n- { UPDATE_0_CHECK; i = (i + i); A0; } else \\\n- { UPDATE_1_CHECK; i = (i + i) + 1; A1; }\n+ { UPDATE_0_CHECK i = (i + i); A0; } else \\\n+ { UPDATE_1_CHECK i = (i + i) + 1; A1; }\n #define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;)\n #define TREE_DECODE_CHECK(probs, limit, i) \\\n { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; }\n \n \n #define REV_BIT_CHECK(p, i, m) IF_BIT_0_CHECK(p + i) \\\n- { UPDATE_0_CHECK; i += m; m += m; } else \\\n- { UPDATE_1_CHECK; m += m; i += m; }\n+ { UPDATE_0_CHECK i += m; m += m; } else \\\n+ { UPDATE_1_CHECK m += m; i += m; }\n \n \n #define kNumPosBitsMax 4\n@@ -226,14 +226,14 @@ Out:\n */\n \n \n-#ifdef _LZMA_DEC_OPT\n+#ifdef Z7_LZMA_DEC_OPT\n \n-int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit);\n+int Z7_FASTCALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit);\n \n #else\n \n static\n-int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit)\n+int Z7_FASTCALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit)\n {\n CLzmaProb *probs = GET_PROBS;\n unsigned state = (unsigned)p->state;\n@@ -269,7 +269,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n IF_BIT_0(prob)\n {\n unsigned symbol;\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n prob = probs + Literal;\n if (processedPos != 0 || checkDicSize != 0)\n prob += (UInt32)3 * ((((processedPos << 8) + dic[(dicPos == 0 ? dicBufSize : dicPos) - 1]) & lpMask) << lc);\n@@ -279,7 +279,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n {\n state -= (state < 4) ? state : 3;\n symbol = 1;\n- #ifdef _LZMA_SIZE_OPT\n+ #ifdef Z7_LZMA_SIZE_OPT\n do { NORMAL_LITER_DEC } while (symbol < 0x100);\n #else\n NORMAL_LITER_DEC\n@@ -298,7 +298,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n unsigned offs = 0x100;\n state -= (state < 10) ? 3 : 6;\n symbol = 1;\n- #ifdef _LZMA_SIZE_OPT\n+ #ifdef Z7_LZMA_SIZE_OPT\n do\n {\n unsigned bit;\n@@ -327,25 +327,25 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n }\n \n {\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n prob = probs + IsRep + state;\n IF_BIT_0(prob)\n {\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n state += kNumStates;\n prob = probs + LenCoder;\n }\n else\n {\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n prob = probs + IsRepG0 + state;\n IF_BIT_0(prob)\n {\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n prob = probs + IsRep0Long + COMBINED_PS_STATE;\n IF_BIT_0(prob)\n {\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n \n // that case was checked before with kBadRepCode\n // if (checkDicSize == 0 && processedPos == 0) { len = kMatchSpecLen_Error_Data + 1; break; }\n@@ -359,30 +359,30 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n state = state < kNumLitStates ? 9 : 11;\n continue;\n }\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n }\n else\n {\n UInt32 distance;\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n prob = probs + IsRepG1 + state;\n IF_BIT_0(prob)\n {\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n distance = rep1;\n }\n else\n {\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n prob = probs + IsRepG2 + state;\n IF_BIT_0(prob)\n {\n- UPDATE_0(prob);\n+ UPDATE_0(prob)\n distance = rep2;\n }\n else\n {\n- UPDATE_1(prob);\n+ UPDATE_1(prob)\n distance = rep3;\n rep3 = rep2;\n }\n@@ -395,37 +395,37 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n prob = probs + RepLenCoder;\n }\n \n- #ifdef _LZMA_SIZE_OPT\n+ #ifdef Z7_LZMA_SIZE_OPT\n {\n unsigned lim, offset;\n CLzmaProb *probLen = prob + LenChoice;\n IF_BIT_0(probLen)\n {\n- UPDATE_0(probLen);\n+ UPDATE_0(probLen)\n probLen = prob + LenLow + GET_LEN_STATE;\n offset = 0;\n lim = (1 << kLenNumLowBits);\n }\n else\n {\n- UPDATE_1(probLen);\n+ UPDATE_1(probLen)\n probLen = prob + LenChoice2;\n IF_BIT_0(probLen)\n {\n- UPDATE_0(probLen);\n+ UPDATE_0(probLen)\n probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits);\n offset = kLenNumLowSymbols;\n lim = (1 << kLenNumLowBits);\n }\n else\n {\n- UPDATE_1(probLen);\n+ UPDATE_1(probLen)\n probLen = prob + LenHigh;\n offset = kLenNumLowSymbols * 2;\n lim = (1 << kLenNumHighBits);\n }\n }\n- TREE_DECODE(probLen, lim, len);\n+ TREE_DECODE(probLen, lim, len)\n len += offset;\n }\n #else\n@@ -433,32 +433,32 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n CLzmaProb *probLen = prob + LenChoice;\n IF_BIT_0(probLen)\n {\n- UPDATE_0(probLen);\n+ UPDATE_0(probLen)\n probLen = prob + LenLow + GET_LEN_STATE;\n len = 1;\n- TREE_GET_BIT(probLen, len);\n- TREE_GET_BIT(probLen, len);\n- TREE_GET_BIT(probLen, len);\n+ TREE_GET_BIT(probLen, len)\n+ TREE_GET_BIT(probLen, len)\n+ TREE_GET_BIT(probLen, len)\n len -= 8;\n }\n else\n {\n- UPDATE_1(probLen);\n+ UPDATE_1(probLen)\n probLen = prob + LenChoice2;\n IF_BIT_0(probLen)\n {\n- UPDATE_0(probLen);\n+ UPDATE_0(probLen)\n probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits);\n len = 1;\n- TREE_GET_BIT(probLen, len);\n- TREE_GET_BIT(probLen, len);\n- TREE_GET_BIT(probLen, len);\n+ TREE_GET_BIT(probLen, len)\n+ TREE_GET_BIT(probLen, len)\n+ TREE_GET_BIT(probLen, len)\n }\n else\n {\n- UPDATE_1(probLen);\n+ UPDATE_1(probLen)\n probLen = prob + LenHigh;\n- TREE_DECODE(probLen, (1 << kLenNumHighBits), len);\n+ TREE_DECODE(probLen, (1 << kLenNumHighBits), len)\n len += kLenNumLowSymbols * 2;\n }\n }\n@@ -470,7 +470,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n UInt32 distance;\n prob = probs + PosSlot +\n ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits);\n- TREE_6_DECODE(prob, distance);\n+ TREE_6_DECODE(prob, distance)\n if (distance >= kStartPosModelIndex)\n {\n unsigned posSlot = (unsigned)distance;\n@@ -485,7 +485,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n distance++;\n do\n {\n- REV_BIT_VAR(prob, distance, m);\n+ REV_BIT_VAR(prob, distance, m)\n }\n while (--numDirectBits);\n distance -= m;\n@@ -520,10 +520,10 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n distance <<= kNumAlignBits;\n {\n unsigned i = 1;\n- REV_BIT_CONST(prob, i, 1);\n- REV_BIT_CONST(prob, i, 2);\n- REV_BIT_CONST(prob, i, 4);\n- REV_BIT_LAST (prob, i, 8);\n+ REV_BIT_CONST(prob, i, 1)\n+ REV_BIT_CONST(prob, i, 2)\n+ REV_BIT_CONST(prob, i, 4)\n+ REV_BIT_LAST (prob, i, 8)\n distance |= i;\n }\n if (distance == (UInt32)0xFFFFFFFF)\n@@ -600,7 +600,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n \n schedule();\n \n- NORMALIZE;\n+ NORMALIZE\n \n p->buf = buf;\n p->range = range;\n@@ -621,7 +621,7 @@ int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit\n \n \n \n-static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit)\n+static void Z7_FASTCALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit)\n {\n unsigned len = (unsigned)p->remainLen;\n if (len == 0 /* || len >= kMatchSpecLenStart */)\n@@ -691,7 +691,7 @@ and we support the following state of (p->checkDicSize):\n (p->checkDicSize == p->prop.dicSize)\n */\n \n-static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit)\n+static int Z7_FASTCALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit)\n {\n if (p->checkDicSize == 0)\n {\n@@ -775,54 +775,54 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt\n else\n {\n unsigned len;\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n \n prob = probs + IsRep + state;\n IF_BIT_0_CHECK(prob)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n state = 0;\n prob = probs + LenCoder;\n res = DUMMY_MATCH;\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n res = DUMMY_REP;\n prob = probs + IsRepG0 + state;\n IF_BIT_0_CHECK(prob)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n prob = probs + IsRep0Long + COMBINED_PS_STATE;\n IF_BIT_0_CHECK(prob)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n break;\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n }\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n prob = probs + IsRepG1 + state;\n IF_BIT_0_CHECK(prob)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n prob = probs + IsRepG2 + state;\n IF_BIT_0_CHECK(prob)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n }\n }\n }\n@@ -834,31 +834,31 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt\n const CLzmaProb *probLen = prob + LenChoice;\n IF_BIT_0_CHECK(probLen)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n probLen = prob + LenLow + GET_LEN_STATE;\n offset = 0;\n limit = 1 << kLenNumLowBits;\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n probLen = prob + LenChoice2;\n IF_BIT_0_CHECK(probLen)\n {\n- UPDATE_0_CHECK;\n+ UPDATE_0_CHECK\n probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits);\n offset = kLenNumLowSymbols;\n limit = 1 << kLenNumLowBits;\n }\n else\n {\n- UPDATE_1_CHECK;\n+ UPDATE_1_CHECK\n probLen = prob + LenHigh;\n offset = kLenNumLowSymbols * 2;\n limit = 1 << kLenNumHighBits;\n }\n }\n- TREE_DECODE_CHECK(probLen, limit, len);\n+ TREE_DECODE_CHECK(probLen, limit, len)\n len += offset;\n }\n \n@@ -868,7 +868,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt\n prob = probs + PosSlot +\n ((len < kNumLenToPosStates - 1 ? len : kNumLenToPosStates - 1) <<\n kNumPosSlotBits);\n- TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot);\n+ TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot)\n if (posSlot >= kStartPosModelIndex)\n {\n unsigned numDirectBits = ((posSlot >> 1) - 1);\n@@ -896,7 +896,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt\n unsigned m = 1;\n do\n {\n- REV_BIT_CHECK(prob, i, m);\n+ REV_BIT_CHECK(prob, i, m)\n }\n while (--numDirectBits);\n }\n@@ -905,7 +905,7 @@ static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, const Byt\n }\n break;\n }\n- NORMALIZE_CHECK;\n+ NORMALIZE_CHECK\n \n *bufOut = buf;\n return res;\n@@ -951,7 +951,7 @@ When the decoder lookahead, and the lookahead symbol is not end_marker, we have\n */\n \n \n-#define RETURN__NOT_FINISHED__FOR_FINISH \\\n+#define RETURN_NOT_FINISHED_FOR_FINISH \\\n *status = LZMA_STATUS_NOT_FINISHED; \\\n return SZ_ERROR_DATA; // for strict mode\n // return SZ_OK; // for relaxed mode\n@@ -1037,7 +1037,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr\n }\n if (p->remainLen != 0)\n {\n- RETURN__NOT_FINISHED__FOR_FINISH;\n+ RETURN_NOT_FINISHED_FOR_FINISH\n }\n checkEndMarkNow = 1;\n }\n@@ -1080,7 +1080,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr\n for (i = 0; i < (unsigned)dummyProcessed; i++)\n p->tempBuf[i] = src[i];\n // p->remainLen = kMatchSpecLen_Error_Data;\n- RETURN__NOT_FINISHED__FOR_FINISH;\n+ RETURN_NOT_FINISHED_FOR_FINISH\n }\n \n bufLimit = src;\n@@ -1158,7 +1158,7 @@ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *sr\n (*srcLen) += (unsigned)dummyProcessed - p->tempBufSize;\n p->tempBufSize = (unsigned)dummyProcessed;\n // p->remainLen = kMatchSpecLen_Error_Data;\n- RETURN__NOT_FINISHED__FOR_FINISH;\n+ RETURN_NOT_FINISHED_FOR_FINISH\n }\n }\n \n@@ -1307,8 +1307,8 @@ static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAl\n SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc)\n {\n CLzmaProps propNew;\n- RINOK(LzmaProps_Decode(&propNew, props, propsSize));\n- RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc));\n+ RINOK(LzmaProps_Decode(&propNew, props, propsSize))\n+ RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc))\n p->prop = propNew;\n return SZ_OK;\n }\n@@ -1317,14 +1317,14 @@ SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAll\n {\n CLzmaProps propNew;\n SizeT dicBufSize;\n- RINOK(LzmaProps_Decode(&propNew, props, propsSize));\n- RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc));\n+ RINOK(LzmaProps_Decode(&propNew, props, propsSize))\n+ RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc))\n \n {\n UInt32 dictSize = propNew.dicSize;\n SizeT mask = ((UInt32)1 << 12) - 1;\n if (dictSize >= ((UInt32)1 << 30)) mask = ((UInt32)1 << 22) - 1;\n- else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1;;\n+ else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1;\n dicBufSize = ((SizeT)dictSize + mask) & ~mask;\n if (dicBufSize < dictSize)\n dicBufSize = dictSize;\n@@ -1356,8 +1356,8 @@ SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,\n *status = LZMA_STATUS_NOT_SPECIFIED;\n if (inSize < RC_INIT_SIZE)\n return SZ_ERROR_INPUT_EOF;\n- LzmaDec_Construct(&p);\n- RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc));\n+ LzmaDec_CONSTRUCT(&p)\n+ RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc))\n p.dic = dest;\n p.dicBufSize = outSize;\n LzmaDec_Init(&p);\ndiff --git a/lib/lzma/LzmaDec.h b/lib/lzma/LzmaDec.h\nindex 3ab4920037c1..c4fec841b016 100644\n--- a/lib/lzma/LzmaDec.h\n+++ b/lib/lzma/LzmaDec.h\n@@ -1,19 +1,19 @@\n /* LzmaDec.h -- LZMA Decoder\n-2020-03-19 : Igor Pavlov : Public domain */\n+2023-04-02 : Igor Pavlov : Public domain */\n \n-#ifndef __LZMA_DEC_H\n-#define __LZMA_DEC_H\n+#ifndef ZIP7_INC_LZMA_DEC_H\n+#define ZIP7_INC_LZMA_DEC_H\n \n #include \"7zTypes.h\"\n \n EXTERN_C_BEGIN\n \n-/* #define _LZMA_PROB32 */\n-/* _LZMA_PROB32 can increase the speed on some CPUs,\n+/* #define Z7_LZMA_PROB32 */\n+/* Z7_LZMA_PROB32 can increase the speed on some CPUs,\n but memory usage for CLzmaDec::probs will be doubled in that case */\n \n typedef\n-#ifdef _LZMA_PROB32\n+#ifdef Z7_LZMA_PROB32\n UInt32\n #else\n UInt16\n@@ -25,7 +25,7 @@ typedef\n \n #define LZMA_PROPS_SIZE 5\n \n-typedef struct _CLzmaProps\n+typedef struct\n {\n Byte lc;\n Byte lp;\n@@ -73,7 +73,8 @@ typedef struct\n Byte tempBuf[LZMA_REQUIRED_INPUT_MAX];\n } CLzmaDec;\n \n-#define LzmaDec_Construct(p) { (p)->dic = NULL; (p)->probs = NULL; }\n+#define LzmaDec_CONSTRUCT(p) { (p)->dic = NULL; (p)->probs = NULL; }\n+#define LzmaDec_Construct(p) LzmaDec_CONSTRUCT(p)\n \n void LzmaDec_Init(CLzmaDec *p);\n \ndiff --git a/lib/lzma/Makefile b/lib/lzma/Makefile\nindex b8ad570ab1c2..09380074b3df 100644\n--- a/lib/lzma/Makefile\n+++ b/lib/lzma/Makefile\n@@ -6,7 +6,7 @@\n # (C) Copyright 2003-2006\n # Wolfgang Denk, DENX Software Engineering, wd@denx.de.\n \n-ccflags-y += -D_LZMA_PROB32\n-ccflags-$(CONFIG_$(PHASE_)LZMA_SIZE_OPTIMIZATION) += -D_LZMA_SIZE_OPT\n+ccflags-y += -DZ7_LZMA_PROB32\n+ccflags-$(CONFIG_$(PHASE_)LZMA_SIZE_OPTIMIZATION) += -DZ7_LZMA_SIZE_OPT\n \n obj-y += LzmaDec.o LzmaTools.o\ndiff --git a/lib/lzma/Precomp.h b/lib/lzma/Precomp.h\nindex e8ff8b40e81a..7747fdd74c64 100644\n--- a/lib/lzma/Precomp.h\n+++ b/lib/lzma/Precomp.h\n@@ -1,10 +1,127 @@\n-/* Precomp.h -- StdAfx\n-2013-11-12 : Igor Pavlov : Public domain */\n+/* Precomp.h -- precompilation file\n+2024-01-25 : Igor Pavlov : Public domain */\n \n-#ifndef __7Z_PRECOMP_H\n-#define __7Z_PRECOMP_H\n+#ifndef ZIP7_INC_PRECOMP_H\n+#define ZIP7_INC_PRECOMP_H\n+\n+/*\n+ this file must be included before another *.h files and before <windows.h>.\n+ this file is included from the following files:\n+ C\\*.c\n+ C\\Util\\*\\Precomp.h <- C\\Util\\*\\*.c\n+ CPP\\Common\\Common.h <- *\\StdAfx.h <- *\\*.cpp\n+\n+ this file can set the following macros:\n+ Z7_LARGE_PAGES 1\n+ Z7_LONG_PATH 1\n+ Z7_WIN32_WINNT_MIN 0x0500 (or higher) : we require at least win2000+ for 7-Zip\n+ _WIN32_WINNT 0x0500 (or higher)\n+ WINVER _WIN32_WINNT\n+ UNICODE 1\n+ _UNICODE 1\n+*/\n \n #include \"Compiler.h\"\n-/* #include \"7zTypes.h\" */\n+\n+#ifdef _MSC_VER\n+// #pragma warning(disable : 4206) // nonstandard extension used : translation unit is empty\n+#if _MSC_VER >= 1912\n+// #pragma warning(disable : 5039) // pointer or reference to potentially throwing function passed to 'extern \"C\"' function under - EHc.Undefined behavior may occur if this function throws an exception.\n+#endif\n+#endif\n+\n+/*\n+// for debug:\n+#define UNICODE 1\n+#define _UNICODE 1\n+#define _WIN32_WINNT 0x0500 // win2000\n+#ifndef WINVER\n+ #define WINVER _WIN32_WINNT\n+#endif\n+*/\n+\n+#ifdef _WIN32\n+/*\n+ this \"Precomp.h\" file must be included before <windows.h>,\n+ if we want to define _WIN32_WINNT before <windows.h>.\n+*/\n+\n+#ifndef Z7_LARGE_PAGES\n+#ifndef Z7_NO_LARGE_PAGES\n+#define Z7_LARGE_PAGES 1\n+#endif\n+#endif\n+\n+#ifndef Z7_LONG_PATH\n+#ifndef Z7_NO_LONG_PATH\n+#define Z7_LONG_PATH 1\n+#endif\n+#endif\n+\n+#ifndef Z7_DEVICE_FILE\n+#ifndef Z7_NO_DEVICE_FILE\n+// #define Z7_DEVICE_FILE 1\n+#endif\n+#endif\n+\n+// we don't change macros if included after <windows.h>\n+#ifndef _WINDOWS_\n+\n+#ifndef Z7_WIN32_WINNT_MIN\n+ #if defined(_M_ARM64) || defined(__aarch64__)\n+ // #define Z7_WIN32_WINNT_MIN 0x0a00 // win10\n+ #define Z7_WIN32_WINNT_MIN 0x0600 // vista\n+ #elif defined(_M_ARM) && defined(_M_ARMT) && defined(_M_ARM_NT)\n+ // #define Z7_WIN32_WINNT_MIN 0x0602 // win8\n+ #define Z7_WIN32_WINNT_MIN 0x0600 // vista\n+ #elif defined(_M_X64) || defined(_M_AMD64) || defined(__x86_64__) || defined(_M_IA64)\n+ #define Z7_WIN32_WINNT_MIN 0x0503 // win2003\n+ // #elif defined(_M_IX86) || defined(__i386__)\n+ // #define Z7_WIN32_WINNT_MIN 0x0500 // win2000\n+ #else // x86 and another(old) systems\n+ #define Z7_WIN32_WINNT_MIN 0x0500 // win2000\n+ // #define Z7_WIN32_WINNT_MIN 0x0502 // win2003 // for debug\n+ #endif\n+#endif // Z7_WIN32_WINNT_MIN\n+\n+\n+#ifndef Z7_DO_NOT_DEFINE_WIN32_WINNT\n+#ifdef _WIN32_WINNT\n+ // #error Stop_Compiling_Bad_WIN32_WINNT\n+#else\n+ #ifndef Z7_NO_DEFINE_WIN32_WINNT\n+Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER\n+ #define _WIN32_WINNT Z7_WIN32_WINNT_MIN\n+Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER\n+ #endif\n+#endif // _WIN32_WINNT\n+\n+#ifndef WINVER\n+ #define WINVER _WIN32_WINNT\n+#endif\n+#endif // Z7_DO_NOT_DEFINE_WIN32_WINNT\n+\n+\n+#ifndef _MBCS\n+#ifndef Z7_NO_UNICODE\n+// UNICODE and _UNICODE are used by <windows.h> and by 7-zip code.\n+\n+#ifndef UNICODE\n+#define UNICODE 1\n+#endif\n+\n+#ifndef _UNICODE\n+Z7_DIAGNOSTIC_IGNORE_BEGIN_RESERVED_MACRO_IDENTIFIER\n+#define _UNICODE 1\n+Z7_DIAGNOSTIC_IGNORE_END_RESERVED_MACRO_IDENTIFIER\n+#endif\n+\n+#endif // Z7_NO_UNICODE\n+#endif // _MBCS\n+#endif // _WINDOWS_\n+\n+// #include \"7zWindows.h\"\n+\n+#endif // _WIN32\n \n #endif\n", "prefixes": [ "RFC", "7/9" ] }