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)
diff --git a/src/os_win32.c b/src/os_win32.c
index 874a2c6..a966c53 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -7558,7 +7558,7 @@
/*
- * 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 @@
{
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 @@
/*
* 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 bbf13dd..08cb9c9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2962,
+/**/
2961,
/**/
2960,