forked from Bananymous/banan-os
BAN: Return UTF::invalid from byte_length instead of 0
This commit is contained in:
parent
4656b11256
commit
e9f8471a28
|
@ -18,7 +18,7 @@ namespace BAN::UTF8
|
||||||
return 3;
|
return 3;
|
||||||
if ((first_byte & 0xF8) == 0xF0)
|
if ((first_byte & 0xF8) == 0xF0)
|
||||||
return 4;
|
return 4;
|
||||||
return 0;
|
return UTF8::invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T> requires (sizeof(T) == 1)
|
template<typename T> requires (sizeof(T) == 1)
|
||||||
|
|
|
@ -560,9 +560,12 @@ int mblen(const char* s, size_t n)
|
||||||
case LOCALE_POSIX:
|
case LOCALE_POSIX:
|
||||||
return 1;
|
return 1;
|
||||||
case LOCALE_UTF8:
|
case LOCALE_UTF8:
|
||||||
if (const auto bytes = BAN::UTF8::byte_length(*s); n >= bytes)
|
const auto bytes = BAN::UTF8::byte_length(*s);
|
||||||
return bytes;
|
if (bytes == BAN::UTF8::invalid)
|
||||||
return -1;
|
return -1;
|
||||||
|
if (n < bytes)
|
||||||
|
return -1;
|
||||||
|
return bytes;
|
||||||
}
|
}
|
||||||
ASSERT_NOT_REACHED();
|
ASSERT_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,7 +176,7 @@ namespace LibFont
|
||||||
|
|
||||||
uint32_t len = BAN::UTF8::byte_length(bytes[0]);
|
uint32_t len = BAN::UTF8::byte_length(bytes[0]);
|
||||||
|
|
||||||
if (len == 0)
|
if (len == BAN::UTF8::invalid)
|
||||||
{
|
{
|
||||||
invalid_utf = true;
|
invalid_utf = true;
|
||||||
byte_index = 0;
|
byte_index = 0;
|
||||||
|
|
|
@ -748,7 +748,7 @@ Rectangle Terminal::putchar(uint8_t ch)
|
||||||
m_utf8_bytes[m_utf8_index++] = ch;
|
m_utf8_bytes[m_utf8_index++] = ch;
|
||||||
|
|
||||||
const size_t utf8_len = BAN::UTF8::byte_length(m_utf8_bytes[0]);
|
const size_t utf8_len = BAN::UTF8::byte_length(m_utf8_bytes[0]);
|
||||||
if (utf8_len == 0)
|
if (utf8_len == BAN::UTF8::invalid)
|
||||||
{
|
{
|
||||||
dwarnln("invalid utf8 leading byte 0x{2H}", ch);
|
dwarnln("invalid utf8 leading byte 0x{2H}", ch);
|
||||||
m_utf8_index = 0;
|
m_utf8_index = 0;
|
||||||
|
|
Loading…
Reference in New Issue