浏览代码

[Fix] Fix incomplete utf8 sequences handling

tags/2.6
Vsevolod Stakhov 4 年前
父节点
当前提交
d3e506655f
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12
    0
      contrib/replxx/src/conversion.cxx

+ 12
- 0
contrib/replxx/src/conversion.cxx 查看文件

@@ -54,9 +54,21 @@ ConversionResult copyString8to32(char32_t* dst, int dstSize, int& dstCount, cons

while (i < slen && j < dstSize) {
UChar32 uc;
auto prev_i = i;
U8_NEXT (sourceStart, i, slen, uc);

if (uc <= 0) {
if (U8_IS_LEAD (sourceStart[prev_i])) {
auto lead_byte = sourceStart[prev_i];
auto trailing_bytes = (((uint8_t)(lead_byte)>=0xc2)+
((uint8_t)(lead_byte)>=0xe0)+
((uint8_t)(lead_byte)>=0xf0));

if (trailing_bytes + i > slen) {
return ConversionResult::sourceExhausted;
}
}

/* Replace with 0xFFFD */
uc = 0x0000FFFD;
}

正在加载...
取消
保存