xz-clib 5.6.3 → 5.6.4
raw patch · 9 files changed
+56/−26 lines, 9 files
Files
- cbits/common/sysdefs.h +21/−9
- cbits/common/tuklib_mbstr_width.c +11/−2
- cbits/liblzma/api/lzma/lzma12.h +1/−1
- cbits/liblzma/api/lzma/version.h +1/−1
- cbits/liblzma/common/memcmplen.h +7/−2
- cbits/liblzma/common/string_conversion.c +4/−0
- cbits/liblzma/lzma/lzma_decoder.c +1/−1
- configure +9/−9
- xz-clib.cabal +1/−1
cbits/common/sysdefs.h view
@@ -23,17 +23,29 @@ # include <config.h> #endif -// This #define ensures that C99 and POSIX compliant stdio functions are-// available with MinGW-w64 (both 32-bit and 64-bit). Modern MinGW-w64 adds-// this automatically, for example, when the compiler is in C99 (or later)-// mode when building against msvcrt.dll. It still doesn't hurt to be explicit-// that we always want this and #define this unconditionally.+// Choose if MinGW-w64's stdio replacement functions should be used.+// The default has varied slightly in the past so it's clearest to always+// set it explicitly. //-// With Universal CRT (UCRT) this is less important because UCRT contains-// C99-compatible stdio functions. It's still nice to #define this as UCRT-// doesn't support the POSIX thousand separator flag in printf (like "%'u").-#ifdef __MINGW32__+// Modern MinGW-w64 enables the replacement functions even with UCRT+// when _GNU_SOURCE is defined. That's good because UCRT doesn't support+// the POSIX thousand separator flag in printf (like "%'u"). Otherwise+// XZ Utils works with the UCRT stdio functions.+//+// The replacement functions add over 20 KiB to each executable. For+// size-optimized builds (HAVE_SMALL), disable the replacements.+// Then thousand separators aren't shown in xz's messages but this is+// a minor downside compare to the slower speed of the HAVE_SMALL builds.+//+// The legacy MSVCRT is pre-C99 and it's best to always use the stdio+// replacements functions from MinGW-w64.+#if defined(__MINGW32__) && !defined(__USE_MINGW_ANSI_STDIO) # define __USE_MINGW_ANSI_STDIO 1+# include <_mingw.h>+# if defined(_UCRT) && defined(HAVE_SMALL)+# undef __USE_MINGW_ANSI_STDIO+# define __USE_MINGW_ANSI_STDIO 0+# endif #endif // size_t and NULL
cbits/common/tuklib_mbstr_width.c view
@@ -12,7 +12,7 @@ #include "tuklib_mbstr.h" #include <string.h> -#if defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)+#ifdef HAVE_MBRTOWC # include <wchar.h> #endif @@ -24,7 +24,7 @@ if (bytes != NULL) *bytes = len; -#if !(defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH))+#ifndef HAVE_MBRTOWC // In single-byte mode, the width of the string is the same // as its length. return len;@@ -46,11 +46,20 @@ i += ret; +#ifdef HAVE_WCWIDTH const int wc_width = wcwidth(wc); if (wc_width < 0) return (size_t)-1; width += (size_t)wc_width;+#else+ // Without wcwidth() (like in a native Windows build),+ // assume that one multibyte char == one column. With+ // UTF-8, this is less bad than one byte == one column.+ // This way quite a few languages will be handled correctly+ // in practice; CJK chars will be very wrong though.+ ++width;+#endif } // Require that the string ends in the initial shift state.
cbits/liblzma/api/lzma/lzma12.h view
@@ -461,7 +461,7 @@ * * ext_size_low holds the least significant 32 bits of the * uncompressed size. The most significant 32 bits must be set- * in ext_size_high. The macro lzma_ext_size_set(opt_lzma, u64size)+ * in ext_size_high. The macro lzma_set_ext_size(opt_lzma, u64size) * can be used to set these members. * * The 64-bit uncompressed size is split into two uint32_t variables
cbits/liblzma/api/lzma/version.h view
@@ -22,7 +22,7 @@ #define LZMA_VERSION_MINOR 6 /** \brief Patch version number of the liblzma release. */-#define LZMA_VERSION_PATCH 3+#define LZMA_VERSION_PATCH 4 /** * \brief Version stability marker
cbits/liblzma/common/memcmplen.h view
@@ -65,8 +65,7 @@ || (defined(_MSC_VER) && (defined(_M_X64) \ || defined(_M_ARM64) || defined(_M_ARM64EC)))) // This is only for x86-64 and ARM64 for now. This might be fine on- // other 64-bit processors too. On big endian one should use xor- // instead of subtraction and switch to __builtin_clzll().+ // other 64-bit processors too. // // Reasons to use subtraction instead of xor: //@@ -82,7 +81,11 @@ // version 2023-05-26. https://www.agner.org/optimize/ #define LZMA_MEMCMPLEN_EXTRA 8 while (len < limit) {+# ifdef WORDS_BIGENDIAN+ const uint64_t x = read64ne(buf1 + len) ^ read64ne(buf2 + len);+# else const uint64_t x = read64ne(buf1 + len) - read64ne(buf2 + len);+# endif if (x != 0) { // MSVC or Intel C compiler on Windows # if defined(_MSC_VER) || defined(__INTEL_COMPILER)@@ -90,6 +93,8 @@ _BitScanForward64(&tmp, x); len += (uint32_t)tmp >> 3; // GCC, Clang, or Intel C compiler+# elif defined(WORDS_BIGENDIAN)+ len += (uint32_t)__builtin_clzll(x) >> 3; # else len += (uint32_t)__builtin_ctzll(x) >> 3; # endif
cbits/liblzma/common/string_conversion.c view
@@ -317,6 +317,10 @@ uint32_t *preset) { assert(*str < str_end);++ if (!(**str >= '0' && **str <= '9'))+ return "Unsupported preset";+ *preset = (uint32_t)(**str - '0'); // NOTE: Remember to update LZMA12_PRESET_STR if this is modified!
cbits/liblzma/lzma/lzma_decoder.c view
@@ -18,7 +18,7 @@ // The macros unroll loops with switch statements. // Silence warnings about missing fall-through comments.-#if TUKLIB_GNUC_REQ(7, 0)+#if TUKLIB_GNUC_REQ(7, 0) || defined(__clang__) # pragma GCC diagnostic ignored "-Wimplicit-fallthrough" #endif
configure view
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.72 for XZ Utils 5.6.3.+# Generated by GNU Autoconf 2.72 for XZ Utils 5.6.4. # # Report bugs to <lasse.collin@tukaani.org>. #@@ -614,8 +614,8 @@ # Identity of this package. PACKAGE_NAME='XZ Utils' PACKAGE_TARNAME='xz'-PACKAGE_VERSION='5.6.3'-PACKAGE_STRING='XZ Utils 5.6.3'+PACKAGE_VERSION='5.6.4'+PACKAGE_STRING='XZ Utils 5.6.4' PACKAGE_BUGREPORT='lasse.collin@tukaani.org' PACKAGE_URL='https://tukaani.org/xz/' @@ -1523,7 +1523,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF-'configure' configures XZ Utils 5.6.3 to adapt to many kinds of systems.+'configure' configures XZ Utils 5.6.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1589,7 +1589,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in- short | recursive ) echo "Configuration of XZ Utils 5.6.3:";;+ short | recursive ) echo "Configuration of XZ Utils 5.6.4:";; esac cat <<\_ACEOF @@ -1794,7 +1794,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF-XZ Utils configure 5.6.3+XZ Utils configure 5.6.4 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc.@@ -2614,7 +2614,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by XZ Utils $as_me 5.6.3, which was+It was created by XZ Utils $as_me 5.6.4, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw@@ -22741,7 +22741,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log="-This file was extended by XZ Utils $as_me 5.6.3, which was+This file was extended by XZ Utils $as_me 5.6.4, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES@@ -22801,7 +22801,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\-XZ Utils config.status 5.6.3+XZ Utils config.status 5.6.4 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\"
xz-clib.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: xz-clib-version: 5.6.3+version: 5.6.4 synopsis: LZMA/XZ clibs description: C source code for the LZMA/XZ compression and decompression library