From 8e13a1e2c8de31e7ddb7af3155f289d3c0d7b347 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 10 Apr 2025 10:42:12 +0200 Subject: [PATCH] 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. --- ChangeLog | 6 ++++++ lib/vasnprintf.c | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1b0508f32e..6e4e2bbe21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2025-04-10 Bruno Haible + + 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 stddef-h: Make a configure test work with upcoming GCC 15. diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 6ae95ca5dd..a0eab63f47 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -1,5 +1,5 @@ /* vsprintf with automatic memory allocation. - Copyright (C) 1999, 2002-2024 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2025 Free Software Foundation, Inc. This file is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -6870,10 +6870,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; -- 2.39.5