forked from aniani/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)
This commit is contained in:
parent
3c3a80dc59
commit
01efafad12
@ -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
|
||||
|
@ -769,6 +769,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
850,
|
||||
/**/
|
||||
849,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user