mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +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_encode_char(a, input_str);
 | 
			
		||||
  if (utf8proc_encode_char(a, input_str) <= 0) {
 | 
			
		||||
    return a;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  utf8proc_uint8_t *fold_str_utf;
 | 
			
		||||
  utf8proc_map((utf8proc_uint8_t *)input_str, 0, &fold_str_utf,
 | 
			
		||||
               UTF8PROC_NULLTERM | UTF8PROC_CASEFOLD);
 | 
			
		||||
  if (utf8proc_map((utf8proc_uint8_t *)input_str, 0, &fold_str_utf,
 | 
			
		||||
                   UTF8PROC_NULLTERM | UTF8PROC_CASEFOLD) < 0) {
 | 
			
		||||
    return a;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  int fold_codepoint_utf = utf_ptr2char((char *)fold_str_utf);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -347,4 +347,10 @@ describe('mbyte', function()
 | 
			
		||||
    check('L̓̉̑̒̌̚ơ̗̌̒̄̀ŕ̈̈̎̐̕è̇̅̄̄̐m̖̟̟̅̄̚', {'L̓̉̑̒̌̚', 'ơ̗̌̒̄̀', 'ŕ̈̈̎̐̕', 'è̇̅̄̄̐', 'm̖̟̟̅̄̚'})
 | 
			
		||||
    -- stylua: ignore end
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  describe('utf_fold', function()
 | 
			
		||||
    itp('does not crash with surrogates #30527', function()
 | 
			
		||||
      eq(0xDDFB, lib.utf_fold(0xDDFB))
 | 
			
		||||
    end)
 | 
			
		||||
  end)
 | 
			
		||||
end)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user