Change common to_string implementations to use snprintf instead of itoa

This commit is contained in:
Myles Busig 2024-03-27 00:59:39 -06:00
parent 002bd5a17a
commit 725fadf22a

View File

@ -172,8 +172,15 @@ public:
num_char = mtl_itostr(x, str.data());
}
#else
itoa(x, str.data(), hex ? 16 : 10);
num_char = strlen(str.data());
if (hex) {
if (x > 0) {
num_char = snprintf(str.data(), str.capacity() + 1, "%#x", x);
} else {
num_char = snprintf(str.data(), str.capacity() + 1, "-%#x", -x);
}
} else {
num_char = snprintf(str.data(), str.capacity() + 1, "%i", x);
}
#endif
str.m_size = num_char;
return str;
@ -198,8 +205,11 @@ public:
num_char = mtl_utostr(x, str.data());
}
#else
utoa(x, str.data(), hex ? 16 : 10);
num_char = strlen(str.data());
if (hex) {
num_char = snprintf(str.data(), str.capacity() + 1, "%#x", x);
} else {
num_char = snprintf(str.data(), str.capacity() + 1, "%u", x);
}
#endif
str.m_size = num_char;
return str;
@ -243,8 +253,7 @@ public:
#ifdef __ARM_ARCH_4T__
num_char = mtl_utostrx(reinterpret_cast<uint32_t>(x), str.data());
#else
utoa(x, str.data(), 16);
num_char = strlen(str.data());
num_char = snprintf(str.data(), str.capacity() + 1, "%#x", x);
#endif
str.m_size = num_char;
return str;