# HG changeset patch # User Christian Brabandt # Date 1501775104 -7200 # Node ID 351d94dc83752c994004ec4c097a9e43d3cf3655 # Parent 0372e70a83581b958a7e1ef11ae261edbf2ab203 patch 8.0.0850: MS-Windows: error message while starting up may be broken commit https://github.com/vim/vim/commit/01efafad12102df0f1e341d6cadcb7be971591c1 Author: Bram Moolenaar Date: Thu Aug 3 17:37:48 2017 +0200 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 850, +/**/ 849, /**/ 848,