patch 8.1.1269: MS-Windows GUI: multibyte chars with a 0x80 byte do not work
Problem: MS-Windows GUI: multibyte chars with a 0x80 byte do not work when
compiled with VIMDLL.
Solution: Adjust the condition for fixing the input buffer. (Ken Takata,
closes #4330)
diff --git a/src/getchar.c b/src/getchar.c
index 776e4e6..6a4c60f 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3095,7 +3095,7 @@
/*
* Fix typed characters for use by vgetc() and check_termcode().
- * buf[] must have room to triple the number of bytes!
+ * "buf[]" must have room to triple the number of bytes!
* Returns the new length.
*/
int
@@ -3135,14 +3135,15 @@
else
#endif
if (p[0] == NUL || (p[0] == K_SPECIAL
- /* timeout may generate K_CURSORHOLD */
+ // timeout may generate K_CURSORHOLD
&& (i < 2 || p[1] != KS_EXTRA || p[2] != (int)KE_CURSORHOLD)
#if defined(MSWIN) && (!defined(FEAT_GUI) || defined(VIMDLL))
+ // Win32 console passes modifiers
+ && (
# ifdef VIMDLL
- && !gui.in_use
+ gui.in_use ||
# endif
- /* Win32 console passes modifiers */
- && (i < 2 || p[1] != KS_MODIFIER)
+ (i < 2 || p[1] != KS_MODIFIER))
#endif
))
{
@@ -3154,7 +3155,7 @@
len += 2;
}
}
- *p = NUL; /* add trailing NUL */
+ *p = NUL; // add trailing NUL
return len;
}