From: Bram Moolenaar Date: Thu, 3 Aug 2017 15:37:48 +0000 (+0200) Subject: patch 8.0.0850: MS-Windows: error message while starting up may be broken X-Git-Tag: v8.0.0850 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=01efafad12102df0f1e341d6cadcb7be971591c1;p=vim patch 8.0.0850: MS-Windows: error message while starting up may be broken 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) --- diff --git a/src/message.c b/src/message.c index 4273f236a..9a4a32f3e 100644 --- a/src/message.c +++ b/src/message.c @@ -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 diff --git a/src/version.c b/src/version.c index 8a029184c..c5c39fea2 100644 --- a/src/version.c +++ b/src/version.c @@ -769,6 +769,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 850, /**/ 849, /**/