]> Savannah Git Hosting - gnulib.git/commitdiff
vasnwprintf: Support huge wide string arguments.
authorBruno Haible <bruno@clisp.org>
Thu, 20 Jun 2024 06:11:53 +0000 (08:11 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 20 Jun 2024 06:11:53 +0000 (08:11 +0200)
* lib/vasnprintf.c: (VASNPRINTF): In 64-bit builds, handle the %ls
directive ourselves.
(local_wcslen): Adjust #if condition.

ChangeLog
lib/vasnprintf.c

index c68af8c9e782ec6e5773ab6399641e2cdc9c9974..ea01cfe60d22f50b6b6a4324d1f08a907643781f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2024-06-20  Bruno Haible  <bruno@clisp.org>
+
+       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  <eggert@cs.ucla.edu>
 
        sigsegv: avoid unlikely undefined behavior
index 1036f9849801a2e8c44c9a1cda2e86d205585b1e..8efb9ebee2a6cb6f217d1e2bd2250529a5b7b7b4 100644 (file)
@@ -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'