From 94d34cfb941880ba7112cefb196a4a0fc9f713de Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 20 Jun 2024 08:11:53 +0200 Subject: [PATCH] vasnwprintf: Support huge wide string arguments. * lib/vasnprintf.c: (VASNPRINTF): In 64-bit builds, handle the %ls directive ourselves. (local_wcslen): Adjust #if condition. --- ChangeLog | 7 +++++++ lib/vasnprintf.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c68af8c9e7..ea01cfe60d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-06-20 Bruno Haible + + vasnwprintf: Support huge wide string arguments. + * lib/vasnprintf.c: (VASNPRINTF): In 64-bit builds, handle the %ls + directive ourselves. + (local_wcslen): Adjust #if condition. + 2024-06-20 Paul Eggert sigsegv: avoid unlikely undefined behavior diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 1036f98498..8efb9ebee2 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -248,7 +248,7 @@ local_strnlen (const char *string, size_t maxlen) # endif #endif -#if ((!USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_WPRINTF_DIRECTIVE_LC) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || (PTRDIFF_MAX > INT_MAX) || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_DIRECTIVE_LS) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) +#if ((!USE_SNPRINTF || WIDE_CHAR_VERSION || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || (PTRDIFF_MAX > INT_MAX) || !DCHAR_IS_TCHAR || NEED_WPRINTF_DIRECTIVE_LC) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || (PTRDIFF_MAX > INT_MAX) || !HAVE_SNPRINTF_RETVAL_C99 || USE_MSVC__SNPRINTF || NEED_PRINTF_DIRECTIVE_LS) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR) # if HAVE_WCSLEN # define local_wcslen wcslen # else @@ -2993,7 +2993,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, } } #endif -#if WIDE_CHAR_VERSION && (!DCHAR_IS_TCHAR || NEED_WPRINTF_DIRECTIVE_LC) +#if WIDE_CHAR_VERSION && ((PTRDIFF_MAX > INT_MAX) || !DCHAR_IS_TCHAR || NEED_WPRINTF_DIRECTIVE_LC) else if ((dp->conversion == 's' && a.arg[dp->arg_index].type == TYPE_WIDE_STRING) || (dp->conversion == 'c' -- 2.39.5