patch 8.2.5058: input() does not handle composing characters properly
Problem: input() does not handle composing characters properly.
Solution: Use mb_cptr2char_adv() instead of mb_ptr2char_adv().
(closes #10527)
diff --git a/src/getchar.c b/src/getchar.c
index 55fad1c..03d90ac 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -669,7 +669,7 @@
}
else
{
- c = mb_ptr2char_adv(&s);
+ c = mb_cptr2char_adv(&s);
if (c == CAR || c == NL || c == ESC)
c = ' ';
stuffcharReadbuff(c);
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index af07a64..f55e846 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1545,6 +1545,10 @@
call feedkeys(":let c = input('name? ', \"x\\<BS>y\")\<CR>\<CR>", 'xt')
call assert_equal('y', c)
+ " Test for using text with composing characters as default input
+ call feedkeys(":let c = input('name? ', \"ã̳\")\<CR>\<CR>", 'xt')
+ call assert_equal('ã̳', c)
+
" Test for using <CR> as default input
call feedkeys(":let c = input('name? ', \"\\<CR>\")\<CR>x\<CR>", 'xt')
call assert_equal(' x', c)
diff --git a/src/version.c b/src/version.c
index 254b5f1..744fad6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 5058,
+/**/
5057,
/**/
5056,