diff --git a/deps/ox/src/ox/std/strconv.hpp b/deps/ox/src/ox/std/strconv.hpp index df4067db..6bd27d69 100644 --- a/deps/ox/src/ox/std/strconv.hpp +++ b/deps/ox/src/ox/std/strconv.hpp @@ -33,9 +33,9 @@ constexpr ox::Error writeItoa(Integer v, ox::Writer_c auto &writer) noexcept { mod /= base; if (it || digit) { ox::ResizedInt_t start = '0'; - if (digit >= 10) { - start = 'a'; + if (digit >= 10) [[unlikely]] { digit -= 10; + OX_RETURN_ERROR(writer.put('1')); } OX_RETURN_ERROR(writer.put(static_cast(start + digit))); ++it; diff --git a/deps/ox/src/ox/std/test/tests.cpp b/deps/ox/src/ox/std/test/tests.cpp index 941a8a08..7a3e33df 100644 --- a/deps/ox/src/ox/std/test/tests.cpp +++ b/deps/ox/src/ox/std/test/tests.cpp @@ -539,6 +539,19 @@ OX_CLANG_NOWARN_END { "intToStr", [] { + oxExpect(ox::intToStr(static_cast(127)), "127"); + oxExpect(ox::intToStr(static_cast(-128)), "-128"); + oxExpect(ox::intToStr(static_cast(255)), "255"); + oxExpect(ox::intToStr(static_cast(65535)), "65535"); + oxExpect(ox::intToStr(static_cast(32767)), "32767"); + oxExpect(ox::intToStr(static_cast(-32768)), "-32768"); + oxExpect(ox::intToStr(static_cast(4294967295)), "4294967295"); + oxExpect(ox::intToStr(static_cast(2147483647)), "2147483647"); + oxExpect(ox::intToStr(static_cast(-2147483648)), "-2147483648"); + oxExpect(ox::intToStr(static_cast(18446744073709551615u)), "18446744073709551615"); + oxExpect(ox::intToStr(static_cast(9223372036854775807)), "9223372036854775807"); + oxExpect(ox::intToStr(static_cast(-9223372036854775807)), "-9223372036854775807"); + oxExpect(ox::intToStr(0), "0"); oxExpect(ox::intToStr(5), "5"); oxExpect(ox::intToStr(5000), "5000"); oxExpect(ox::intToStr(50000), "50000");