|
|
@ -180,11 +180,11 @@ inline size_t codepoint_length(const char *s8, size_t l) { |
|
|
|
auto b = static_cast<uint8_t>(s8[0]); |
|
|
|
auto b = static_cast<uint8_t>(s8[0]); |
|
|
|
if ((b & 0x80) == 0) { |
|
|
|
if ((b & 0x80) == 0) { |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
} else if ((b & 0xE0) == 0xC0) { |
|
|
|
} else if ((b & 0xE0) == 0xC0 && l >= 2) { |
|
|
|
return 2; |
|
|
|
return 2; |
|
|
|
} else if ((b & 0xF0) == 0xE0) { |
|
|
|
} else if ((b & 0xF0) == 0xE0 && l >= 3) { |
|
|
|
return 3; |
|
|
|
return 3; |
|
|
|
} else if ((b & 0xF8) == 0xF0) { |
|
|
|
} else if ((b & 0xF8) == 0xF0 && l >= 4) { |
|
|
|
return 4; |
|
|
|
return 4; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|