]> Savannah Git Hosting - gnulib.git/commitdiff
unistdio/u*-vasnprintf: Fix conversion of %Id directive result.
authorBruno Haible <bruno@clisp.org>
Wed, 22 Mar 2023 05:13:18 +0000 (06:13 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 22 Mar 2023 21:46:55 +0000 (22:46 +0100)
* lib/vasnprintf.c (VASNPRINTF): Don't assume that snprintf's result is
entirely ASCII if the directive contain the glibc 'I' flag.

ChangeLog
lib/vasnprintf.c

index 19f8e595fac7a52ee9a4dfdafc9e0f8315e578ec..ee12cf31c693424478420d1edb39a82134a10582 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2023-03-21  Bruno Haible  <bruno@clisp.org>
+
+       unistdio/u*-vasnprintf: Fix conversion of %Id directive result.
+       * lib/vasnprintf.c (VASNPRINTF): Don't assume that snprintf's result is
+       entirely ASCII if the directive contain the glibc 'I' flag.
+
 2023-03-21  Ar Rakin  <rakinar2@onesoftnet.eu.org>  (tiny change)
 
        gnupload: correct SFTP connection URL
index 10709da3f1722c8646d840e0958aad8fbd8c62c6..9de17fc730af315dae30d9cc6cd037f8ca7328a9 100644 (file)
@@ -5447,11 +5447,13 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
 
 #if !DCHAR_IS_TCHAR
                     /* Convert from TCHAR_T[] to DCHAR_T[].  */
-                    if (dp->conversion == 'c' || dp->conversion == 's')
+                    if (dp->conversion == 'c' || dp->conversion == 's'
+# if __GLIBC__ >= 2 && !defined __UCLIBC__
+                        || (flags & FLAG_LOCALIZED)
+# endif
+                       )
                       {
-                        /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING
-                           TYPE_WIDE_STRING.
-                           The result string is not certainly ASCII.  */
+                        /* The result string is not guaranteed to be ASCII.  */
                         const TCHAR_T *tmpsrc;
                         DCHAR_T *tmpdst;
                         size_t tmpdst_len;