commit 920e350d85360788acbe2568966f64210322cdda
parent e5b23bd2ff6454409f6366745bccc5ec43eaf68f
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Thu, 26 May 2005 19:14:42 +0000
in input_tab(), make sure that we don't set *place to the middle of a
multibyte character
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2556 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
@@ -55,6 +55,9 @@ CVS code -
long instead of an unsigned int. (DLR)
cwd_tab_completion(), browser_init()
- Rename variable next to nextdir to avoid confusion. (DLR)
+ input_tab()
+ - Make sure that we don't set *place to the middle of a
+ multibyte character. (DLR)
do_browser()
- Don't treat NANO_CANCEL_KEY as NANO_EXIT_KEY anymore, for
consistency. (DLR)
diff --git a/src/files.c b/src/files.c
@@ -2225,7 +2225,10 @@ char *input_tab(char *buf, size_t *place, bool *lastwastab, bool *list)
charmove(buf + common_len, buf + *place,
buflen - *place + 1);
charcpy(buf, mzero, common_len);
- *place = common_len;
+
+ /* Make sure that we don't advance the cursor to the middle
+ * of a multibyte character. */
+ *place = mbstrnlen(buf, common_len);
} else if (*lastwastab == FALSE || num_matches < 2)
*lastwastab = TRUE;
else {