Avoid address sanitizer error
This commit is contained in:
parent
281ddb1b17
commit
d2da2e22e1
@ -245,34 +245,32 @@ namespace StringUtils
|
||||
* code. */
|
||||
inline irr::core::stringw getCountryFlag(const std::string& country_code)
|
||||
{
|
||||
irr::core::stringw result;
|
||||
if (country_code.empty() || country_code.size() != 2)
|
||||
return L"";
|
||||
uint32_t flag[3] =
|
||||
return result;
|
||||
uint32_t flag[2] =
|
||||
{
|
||||
(uint32_t)(country_code[0]) + 127397,
|
||||
(uint32_t)(country_code[1]) + 127397,
|
||||
0
|
||||
(uint32_t)(country_code[1]) + 127397
|
||||
};
|
||||
if (sizeof(wchar_t) == 4)
|
||||
{
|
||||
return (wchar_t*)flag;
|
||||
result.reserve(2);
|
||||
result.append((wchar_t)flag[0]);
|
||||
result.append((wchar_t)flag[1]);
|
||||
}
|
||||
else if (sizeof(wchar_t) == 2)
|
||||
{
|
||||
flag[0] -= 0x10000;
|
||||
flag[1] -= 0x10000;
|
||||
wchar_t u16[5] =
|
||||
{
|
||||
result.reserve(4);
|
||||
//make a surrogate pair
|
||||
static_cast<wchar_t>((flag[0] >> 10) + 0xd800),
|
||||
static_cast<wchar_t>((flag[0] & 0x3ff) + 0xdc00),
|
||||
static_cast<wchar_t>((flag[1] >> 10) + 0xd800),
|
||||
static_cast<wchar_t>((flag[1] & 0x3ff) + 0xdc00),
|
||||
0
|
||||
};
|
||||
return u16;
|
||||
result.append(static_cast<wchar_t>((flag[0] >> 10) + 0xd800));
|
||||
result.append(static_cast<wchar_t>((flag[0] & 0x3ff) + 0xdc00));
|
||||
result.append(static_cast<wchar_t>((flag[1] >> 10) + 0xd800));
|
||||
result.append(static_cast<wchar_t>((flag[1] & 0x3ff) + 0xdc00));
|
||||
}
|
||||
return L"";
|
||||
return result;
|
||||
} // getCountryFlag
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user