Permalink
Browse files

patch 8.0.0850: MS-Windows: error message while starting up may be br…

…oken

Problem:    MS-Windows: Depending on the console encoding, an error message
            that is given during startup may be broken.
Solution:   Convert the message to the console codepage. (Yasuhiro Matsumoto,
            closes #1927)
  • Loading branch information...
brammool committed Aug 3, 2017
1 parent 3c3a80d commit 01efafad12102df0f1e341d6cadcb7be971591c1
Showing with 25 additions and 1 deletion.
  1. +23 −1 src/message.c
  2. +2 −0 src/version.c
View
@@ -2628,10 +2628,29 @@ msg_puts_printf(char_u *str, int maxlen)
char_u *s = str;
char_u buf[4];
char_u *p;
#ifdef WIN3264
# if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
char_u *ccp = NULL;
# endif
if (!(silent_mode && p_verbose == 0))
mch_settmode(TMODE_COOK); /* handle '\r' and '\n' correctly */
# if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
if (enc_codepage >= 0 && (int)GetConsoleCP() != enc_codepage)
{
int len;
WCHAR *widestr = (WCHAR *)enc_to_utf16(str, &len);
if (widestr != NULL)
{
WideCharToMultiByte_alloc(GetConsoleCP(), 0, widestr, len,
(LPSTR *)&ccp, &len, 0, 0);
vim_free(widestr);
s = str = ccp;
}
}
# endif
#endif
while ((maxlen < 0 || (int)(s - str) < maxlen) && *s != NUL)
{
@@ -2675,6 +2694,9 @@ msg_puts_printf(char_u *str, int maxlen)
msg_didout = TRUE; /* assume that line is not empty */
#ifdef WIN3264
# if defined(FEAT_MBYTE) && !defined(FEAT_GUI_MSWIN)
vim_free(ccp);
# endif
if (!(silent_mode && p_verbose == 0))
mch_settmode(TMODE_RAW);
#endif
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
850,
/**/
849,
/**/

0 comments on commit 01efafa

Please sign in to comment.