Use std::invalid_argument in Utf8CharSizeAt
parent
4bce63e38d
commit
d9e26c2516
|
@ -184,7 +184,12 @@ int StrUtils::Utf8CharSizeAt(const std::string &str, unsigned int pos)
|
|||
if((c & 0b1111'1000) == 0b1111'0000)
|
||||
return 4;
|
||||
|
||||
return 1;
|
||||
// Invalid char - unexpected continuation byte
|
||||
if (isUtf8ContinuationByte(c))
|
||||
throw std::invalid_argument("Unexpected UTF-8 continuation byte");
|
||||
|
||||
// (c & 0b1111'1000) == 0b1111'1000 is true here
|
||||
throw std::invalid_argument("Byte value has no sense in UTF-8");
|
||||
}
|
||||
|
||||
std::size_t StrUtils::Utf8StringLength(const std::string &str)
|
||||
|
|
|
@ -937,7 +937,14 @@ int CText::GetCharSizeAt(Gfx::FontType font, const std::string& text, unsigned i
|
|||
}
|
||||
else
|
||||
{
|
||||
len = StrUtils::Utf8CharSizeAt(text, index);
|
||||
try
|
||||
{
|
||||
len = StrUtils::Utf8CharSizeAt(text, index);
|
||||
}
|
||||
catch (std::invalid_argument &e)
|
||||
{
|
||||
len = 1;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue