diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-14 13:13:27 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-07-14 13:13:27 +0200 |
commit | 3313ea1fe6717313c6dc11b783bad7c89cbab8c4 (patch) | |
tree | b5fd8373809158f59309a2fdd9041a34c90fdaf7 | |
parent | 054dd3596fa349805a353836952f96691e67912d (diff) |
Core/Entities: Skip calling toupper on number to string conversion result if not neccessary (only hex conversions need it)
-rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index ffa7b395e3a..4b3c661ccaa 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -85,15 +85,18 @@ namespace std::array<char, 20> buf; auto [end, err] = std::to_chars(buf.data(), buf.data() + buf.size(), component, Base); - ASSERT_NODEBUGINFO(err == std::errc(), "Failed to convert guid part to string"); + ASSERT(err == std::errc(), "Failed to convert guid part to string"); if constexpr (Width != 0) { - if (std::distance(buf.data(), end) < Width) - std::fill_n(ctx.out(), Width - std::distance(buf.data(), end), '0'); + if (std::ptrdiff_t written = std::distance(buf.data(), end); written < Width) + std::fill_n(ctx.out(), Width - written, '0'); } - return std::transform(buf.data(), end, ctx.out(), charToUpper); + if constexpr (Base > 10) + return std::transform(buf.data(), end, ctx.out(), charToUpper); + else + return std::copy(buf.data(), end, ctx.out()); } static fmt::appender AppendComponent(fmt::format_context& ctx, std::string_view component) |