From a484c9bd2ea99c9be90cac4dfefef56d71e62efa Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Thu, 22 Dec 2022 12:01:21 -0800 Subject: [PATCH] [libc][obvious] fix errno for 32 bit long test one of the tests in StrtolTest.h is intended to detect that 32 bit longs are handled correctly, but it wasn't using the correct value for errno causing failures. Differential Revision: https://reviews.llvm.org/D140577 --- libc/test/src/stdlib/StrtolTest.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libc/test/src/stdlib/StrtolTest.h b/libc/test/src/stdlib/StrtolTest.h index d96b64cedd33..f240c64e52ab 100644 --- a/libc/test/src/stdlib/StrtolTest.h +++ b/libc/test/src/stdlib/StrtolTest.h @@ -70,9 +70,13 @@ struct StrtoTest : public __llvm_libc::testing::Test { // wide, strtol will return LONG_MAX. const char *bigger_number = "12345678900"; errno = 0; - ASSERT_EQ(func(bigger_number, &str_end, 10), - ((sizeof(ReturnT) < 8) ? T_MAX : ReturnT(12345678900))); - ASSERT_EQ(errno, 0); + if constexpr (sizeof(ReturnT) < 8) { + ASSERT_EQ(func(bigger_number, &str_end, 10), T_MAX); + ASSERT_EQ(errno, ERANGE); + } else { + ASSERT_EQ(func(bigger_number, &str_end, 10), ReturnT(12345678900)); + ASSERT_EQ(errno, 0); + } EXPECT_EQ(str_end - bigger_number, ptrdiff_t(11)); const char *too_big_number = "123456789012345678901";