From dc73b4b75de0134db3dffa6e631daf6cae817545 Mon Sep 17 00:00:00 2001 From: "K.Takata" Date: Tue, 8 Jun 2021 18:32:36 +0200 Subject: [PATCH] patch 8.2.2962: MS-Windows command line arguments have wrong encoding Problem: MS-Windows command line arguments have wrong encoding. Solution: Always use utf-8 in get_cmd_argsW(). (Ken Takata, closes #8347) --- src/os_win32.c | 8 ++++---- src/version.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/os_win32.c b/src/os_win32.c index 874a2c69d..a966c5349 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -7558,7 +7558,7 @@ myresetstkoflw(void) /* - * The command line arguments in UCS2 + * The command line arguments in UTF-16 */ static int nArgsW = 0; static LPWSTR *ArglistW = NULL; @@ -7601,8 +7601,8 @@ get_cmd_argsW(char ***argvp) { int len; - // Convert each Unicode argument to the current codepage. - WideCharToMultiByte_alloc(GetACP(), 0, + // Convert each Unicode argument to UTF-8. + WideCharToMultiByte_alloc(CP_UTF8, 0, ArglistW[i], (int)wcslen(ArglistW[i]) + 1, (LPSTR *)&argv[i], &len, 0, 0); if (argv[i] == NULL) @@ -7678,7 +7678,7 @@ set_alist_count(void) /* * Fix the encoding of the command line arguments. Invoked when 'encoding' - * has been changed while starting up. Use the UCS-2 command line arguments + * has been changed while starting up. Use the UTF-16 command line arguments * and convert them to 'encoding'. */ void diff --git a/src/version.c b/src/version.c index bbf13dddf..08cb9c98e 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2962, /**/ 2961, /**/ -- 2.40.0