From 7077b016cc19793e11f9b9aa3d909390acd3819b Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sat, 11 Jul 2026 09:17:57 -0700 Subject: [PATCH] Guard fast decimal path on bit width instead of byte size Use num_bits() == 32 instead of sizeof(UInt) == 4 in do_format_decimal. The magic-number two-digit algorithm requires exactly 32 value bits, so this is more precise on platforms where CHAR_BIT != 8 and is consistent with existing num_bits() usage. --- include/fmt/format.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/fmt/format.h b/include/fmt/format.h index 57062792..b13bc4cf 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1234,7 +1234,7 @@ FMT_CONSTEXPR20 auto do_format_decimal(Char* out, UInt value, int size) unsigned n = to_unsigned(size); while (value >= 100) { n -= 2; - if (!is_constant_evaluated() && sizeof(UInt) == 4) { + if (!is_constant_evaluated() && num_bits() == 32) { auto p = value * static_cast((1ull << 39) / 100 + 1); write2digits_i(out + n, p >> (39 - 7) & ((1 << 7) - 1)); value = static_cast(p >> 39) +