From a21cf5663c3e757e98a396e47471af63bd4955b0 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 9 Aug 2024 13:09:23 -0700 Subject: [PATCH] [libc] Fix use of cpp::numeric_limits<...>::digits (#102674) The previous change replaced INT_WIDTH with cpp::numberic_limits::digits, but these don't have the same value. While INT_WIDTH == UINT_WIDTH, not so for ::digits, so use cpp::numberic_limits::digits et al instead for the intended effects. Bug: https://issues.fuchsia.dev/358196552 --- libc/src/stdio/printf_core/parser.h | 6 +++--- libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libc/src/stdio/printf_core/parser.h b/libc/src/stdio/printf_core/parser.h index 9a3f19a919744d0..684911a5675690f 100644 --- a/libc/src/stdio/printf_core/parser.h +++ b/libc/src/stdio/printf_core/parser.h @@ -211,11 +211,11 @@ template class Parser { case (LengthModifier::wf): if (bw == 0) { section.has_conv = false; - } else if (bw <= cpp::numeric_limits::digits) { + } else if (bw <= cpp::numeric_limits::digits) { WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, int, conv_index); - } else if (bw <= cpp::numeric_limits::digits) { + } else if (bw <= cpp::numeric_limits::digits) { WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, long, conv_index); - } else if (bw <= cpp::numeric_limits::digits) { + } else if (bw <= cpp::numeric_limits::digits) { WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, long long, conv_index); } else { WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, intmax_t, conv_index); diff --git a/libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp b/libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp index f1b8363ecc8f735..c047457cc82e595 100644 --- a/libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp +++ b/libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp @@ -12,14 +12,15 @@ #include TEST(LlvmLibcStdcLeadingZerosUiTest, Zero) { - EXPECT_EQ( - LIBC_NAMESPACE::stdc_leading_zeros_ui(0U), - static_cast(LIBC_NAMESPACE::cpp::numeric_limits::digits)); + EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ui(0U), + static_cast( + LIBC_NAMESPACE::cpp::numeric_limits::digits)); } TEST(LlvmLibcStdcLeadingZerosUiTest, OneHot) { - for (unsigned i = 0U; i != LIBC_NAMESPACE::cpp::numeric_limits::digits; - ++i) + for (unsigned i = 0U; + i != LIBC_NAMESPACE::cpp::numeric_limits::digits; ++i) EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ui(1U << i), - LIBC_NAMESPACE::cpp::numeric_limits::digits - i - 1); + LIBC_NAMESPACE::cpp::numeric_limits::digits - i - + 1); }