mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
fix(mbyte): check for utf8proc_map() failure (#30531)
This commit is contained in:
@@ -1380,11 +1380,15 @@ int utf_fold(int a)
|
|||||||
}
|
}
|
||||||
|
|
||||||
utf8proc_uint8_t input_str[16] = { 0 };
|
utf8proc_uint8_t input_str[16] = { 0 };
|
||||||
utf8proc_encode_char(a, input_str);
|
if (utf8proc_encode_char(a, input_str) <= 0) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
utf8proc_uint8_t *fold_str_utf;
|
utf8proc_uint8_t *fold_str_utf;
|
||||||
utf8proc_map((utf8proc_uint8_t *)input_str, 0, &fold_str_utf,
|
if (utf8proc_map((utf8proc_uint8_t *)input_str, 0, &fold_str_utf,
|
||||||
UTF8PROC_NULLTERM | UTF8PROC_CASEFOLD);
|
UTF8PROC_NULLTERM | UTF8PROC_CASEFOLD) < 0) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
int fold_codepoint_utf = utf_ptr2char((char *)fold_str_utf);
|
int fold_codepoint_utf = utf_ptr2char((char *)fold_str_utf);
|
||||||
|
|
||||||
|
@@ -347,4 +347,10 @@ describe('mbyte', function()
|
|||||||
check('L̓̉̑̒̌̚ơ̗̌̒̄̀ŕ̈̈̎̐̕è̇̅̄̄̐m̖̟̟̅̄̚', {'L̓̉̑̒̌̚', 'ơ̗̌̒̄̀', 'ŕ̈̈̎̐̕', 'è̇̅̄̄̐', 'm̖̟̟̅̄̚'})
|
check('L̓̉̑̒̌̚ơ̗̌̒̄̀ŕ̈̈̎̐̕è̇̅̄̄̐m̖̟̟̅̄̚', {'L̓̉̑̒̌̚', 'ơ̗̌̒̄̀', 'ŕ̈̈̎̐̕', 'è̇̅̄̄̐', 'm̖̟̟̅̄̚'})
|
||||||
-- stylua: ignore end
|
-- stylua: ignore end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('utf_fold', function()
|
||||||
|
itp('does not crash with surrogates #30527', function()
|
||||||
|
eq(0xDDFB, lib.utf_fold(0xDDFB))
|
||||||
|
end)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Reference in New Issue
Block a user