Skip to content

Commit a21cf56

Browse files
authored
[libc] Fix use of cpp::numeric_limits<...>::digits (#102674)
The previous change replaced INT_WIDTH with cpp::numberic_limits<int>::digits, but these don't have the same value. While INT_WIDTH == UINT_WIDTH, not so for ::digits, so use cpp::numberic_limits<unsigned int>::digits et al instead for the intended effects. Bug: https://issues.fuchsia.dev/358196552
1 parent 7359a6b commit a21cf56

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

libc/src/stdio/printf_core/parser.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,11 @@ template <typename ArgProvider> class Parser {
211211
case (LengthModifier::wf):
212212
if (bw == 0) {
213213
section.has_conv = false;
214-
} else if (bw <= cpp::numeric_limits<int>::digits) {
214+
} else if (bw <= cpp::numeric_limits<unsigned int>::digits) {
215215
WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, int, conv_index);
216-
} else if (bw <= cpp::numeric_limits<long>::digits) {
216+
} else if (bw <= cpp::numeric_limits<unsigned long>::digits) {
217217
WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, long, conv_index);
218-
} else if (bw <= cpp::numeric_limits<long long>::digits) {
218+
} else if (bw <= cpp::numeric_limits<unsigned long long>::digits) {
219219
WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, long long, conv_index);
220220
} else {
221221
WRITE_ARG_VAL_SIMPLEST(section.conv_val_raw, intmax_t, conv_index);

libc/test/src/stdbit/stdc_leading_zeros_ui_test.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@
1212
#include <stddef.h>
1313

1414
TEST(LlvmLibcStdcLeadingZerosUiTest, Zero) {
15-
EXPECT_EQ(
16-
LIBC_NAMESPACE::stdc_leading_zeros_ui(0U),
17-
static_cast<unsigned>(LIBC_NAMESPACE::cpp::numeric_limits<int>::digits));
15+
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ui(0U),
16+
static_cast<unsigned>(
17+
LIBC_NAMESPACE::cpp::numeric_limits<unsigned int>::digits));
1818
}
1919

2020
TEST(LlvmLibcStdcLeadingZerosUiTest, OneHot) {
21-
for (unsigned i = 0U; i != LIBC_NAMESPACE::cpp::numeric_limits<int>::digits;
22-
++i)
21+
for (unsigned i = 0U;
22+
i != LIBC_NAMESPACE::cpp::numeric_limits<unsigned int>::digits; ++i)
2323
EXPECT_EQ(LIBC_NAMESPACE::stdc_leading_zeros_ui(1U << i),
24-
LIBC_NAMESPACE::cpp::numeric_limits<int>::digits - i - 1);
24+
LIBC_NAMESPACE::cpp::numeric_limits<unsigned int>::digits - i -
25+
1);
2526
}

0 commit comments

Comments
 (0)