diff --git a/include/stdex/uuid.hpp b/include/stdex/uuid.hpp index 78c50317e..7a81877a1 100644 --- a/include/stdex/uuid.hpp +++ b/include/stdex/uuid.hpp @@ -20,24 +20,30 @@ namespace stdex { + /// + /// Number of characters required to hold a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} GUID representation. + /// Including zero terminator. + /// + constexpr size_t uuid_str_max = 39; + /// /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. /// - /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. + /// \param[out] str String to write GUID. Must point to at least `uuid_str_max` code points to write complete GUID including zero terminator. /// \param[in ] id GUID to write. /// - inline void uuidtostr(_Out_writes_z_(39) char str[39], _In_ const uuid_t& id) + inline void uuidtostr(_Out_writes_z_(uuid_str_max) char str[uuid_str_max], _In_ const uuid_t& id) { stdex_assert(str); #ifdef _WIN32 - _snprintf_s_l(str, 39, _TRUNCATE, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + _snprintf_s_l(str, uuid_str_max, _TRUNCATE, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, id.Data1, static_cast(id.Data2), static_cast(id.Data3), static_cast(id.Data4[0]), static_cast(id.Data4[1]), static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); #else - snprintf(str, 39, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", + snprintf(str, uuid_str_max, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", *reinterpret_cast(&id[0]), static_cast(*reinterpret_cast(&id[4])), static_cast(*reinterpret_cast(&id[6])), @@ -49,21 +55,21 @@ namespace stdex /// /// Formats GUID to a registry string {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. /// - /// \param[out] str String to write GUID. Must point to at least 39 code points to write complete GUID including zero terminator. + /// \param[out] str String to write GUID. Must point to at least `uuid_str_max` code points to write complete GUID including zero terminator. /// \param[in ] id GUID to write. /// - inline void uuidtostr(_Out_writes_z_(39) wchar_t str[39], _In_ const uuid_t& id) + inline void uuidtostr(_Out_writes_z_(uuid_str_max) wchar_t str[uuid_str_max], _In_ const uuid_t& id) { stdex_assert(str); #ifdef _WIN32 - _snwprintf_s_l(str, 39, _TRUNCATE, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + _snwprintf_s_l(str, uuid_str_max, _TRUNCATE, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, id.Data1, static_cast(id.Data2), static_cast(id.Data3), static_cast(id.Data4[0]), static_cast(id.Data4[1]), static_cast(id.Data4[2]), static_cast(id.Data4[3]), static_cast(id.Data4[4]), static_cast(id.Data4[5]), static_cast(id.Data4[6]), static_cast(id.Data4[7])); #else - swprintf(str, 39, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, + swprintf(str, uuid_str_max, L"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", NULL, *reinterpret_cast(&id[0]), static_cast(*reinterpret_cast(&id[4])), static_cast(*reinterpret_cast(&id[6])),