]> Savannah Git Hosting - gnulib.git/commitdiff
vasnprintf: Fix handling of # flag in %b, %B directives.
authorBruno Haible <bruno@clisp.org>
Thu, 10 Apr 2025 08:42:12 +0000 (10:42 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 14 Apr 2025 22:41:09 +0000 (00:41 +0200)
* lib/vasnprintf.c (VASNPRINTF): In the prec_ourselves code, treat a 0b
prefix like a 0x prefix.

ChangeLog
lib/vasnprintf.c

index ac2b7b032df5a417c29c9cb5ca32575343951899..457a00bed81634d0b5849e8a7b2bff95bc0bbe1e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-04-10  Bruno Haible  <bruno@clisp.org>
+
+       vasnprintf: Fix handling of # flag in %b, %B directives.
+       * lib/vasnprintf.c (VASNPRINTF): In the prec_ourselves code, treat a 0b
+       prefix like a 0x prefix.
+
 2025-04-08  Bruno Haible  <bruno@clisp.org>
 
        stddef-h: Make a configure test work with upcoming GCC 15.
index 9bdea145d130211418eb85a4dcfe6def84a2567a..9d6b2eab0ca8ba6c01bdbcd091c9c4ff59a023dd 100644 (file)
@@ -6876,10 +6876,13 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                                 || *prec_ptr == ' '))
                           prefix_count = 1;
                         /* Put the additional zeroes after the 0x prefix if
-                           (flags & FLAG_ALT) || (dp->conversion == 'p').  */
+                           (flags & FLAG_ALT) || (dp->conversion == 'p'), or
+                           after the 0b prefix if (flags & FLAG_ALT).  */
                         else if (count >= 2
                                  && prec_ptr[0] == '0'
-                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'))
+                                 && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X'
+                                     || prec_ptr[1] == 'b'
+                                     || prec_ptr[1] == 'B'))
                           prefix_count = 2;
 
                         move = count - prefix_count;