{"id":2175802,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2175802/?format=json","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.0/projects/18/?format=json","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=json","name":"Tom Rini","email":"trini@konsulko.com"},"delegate":{"id":3651,"url":"http://patchwork.ozlabs.org/api/1.0/users/3651/?format=json","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=json","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"]}