[ox/std] Fix writeItoa to work with max length 64 bit ints
All checks were successful
Build / build (push) Successful in 1m8s
All checks were successful
Build / build (push) Successful in 1m8s
This commit is contained in:
4
deps/ox/src/ox/std/strconv.hpp
vendored
4
deps/ox/src/ox/std/strconv.hpp
vendored
@@ -33,9 +33,9 @@ constexpr ox::Error writeItoa(Integer v, ox::Writer_c auto &writer) noexcept {
|
|||||||
mod /= base;
|
mod /= base;
|
||||||
if (it || digit) {
|
if (it || digit) {
|
||||||
ox::ResizedInt_t<Integer, 64> start = '0';
|
ox::ResizedInt_t<Integer, 64> start = '0';
|
||||||
if (digit >= 10) {
|
if (digit >= 10) [[unlikely]] {
|
||||||
start = 'a';
|
|
||||||
digit -= 10;
|
digit -= 10;
|
||||||
|
OX_RETURN_ERROR(writer.put('1'));
|
||||||
}
|
}
|
||||||
OX_RETURN_ERROR(writer.put(static_cast<char>(start + digit)));
|
OX_RETURN_ERROR(writer.put(static_cast<char>(start + digit)));
|
||||||
++it;
|
++it;
|
||||||
|
|||||||
13
deps/ox/src/ox/std/test/tests.cpp
vendored
13
deps/ox/src/ox/std/test/tests.cpp
vendored
@@ -539,6 +539,19 @@ OX_CLANG_NOWARN_END
|
|||||||
{
|
{
|
||||||
"intToStr",
|
"intToStr",
|
||||||
[] {
|
[] {
|
||||||
|
oxExpect(ox::intToStr(static_cast<int8_t>(127)), "127");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int8_t>(-128)), "-128");
|
||||||
|
oxExpect(ox::intToStr(static_cast<uint8_t>(255)), "255");
|
||||||
|
oxExpect(ox::intToStr(static_cast<uint16_t>(65535)), "65535");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int16_t>(32767)), "32767");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int16_t>(-32768)), "-32768");
|
||||||
|
oxExpect(ox::intToStr(static_cast<uint32_t>(4294967295)), "4294967295");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int32_t>(2147483647)), "2147483647");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int32_t>(-2147483648)), "-2147483648");
|
||||||
|
oxExpect(ox::intToStr(static_cast<uint64_t>(18446744073709551615u)), "18446744073709551615");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int64_t>(9223372036854775807)), "9223372036854775807");
|
||||||
|
oxExpect(ox::intToStr(static_cast<int64_t>(-9223372036854775807)), "-9223372036854775807");
|
||||||
|
oxExpect(ox::intToStr(0), "0");
|
||||||
oxExpect(ox::intToStr(5), "5");
|
oxExpect(ox::intToStr(5), "5");
|
||||||
oxExpect(ox::intToStr(5000), "5000");
|
oxExpect(ox::intToStr(5000), "5000");
|
||||||
oxExpect(ox::intToStr(50000), "50000");
|
oxExpect(ox::intToStr(50000), "50000");
|
||||||
|
|||||||
Reference in New Issue
Block a user