updated for version 7.4.432
Problem: When the startup code expands command line arguments, setting
'encoding' will not properly convert the arguments.
Solution: Call get_cmd_argsW() early in main(). (Yasuhiro Matsumoto)
diff --git a/src/main.c b/src/main.c
index 2fb2edc..70d2911 100644
--- a/src/main.c
+++ b/src/main.c
@@ -178,6 +178,14 @@
*/
mch_early_init();
+#if defined(WIN32) && defined(FEAT_MBYTE)
+ /*
+ * MingW expands command line arguments, which confuses our code to
+ * convert when 'encoding' changes. Get the unexpanded arguments.
+ */
+ argc = get_cmd_argsW(&argv);
+#endif
+
/* Many variables are in "params" so that we can pass them to invoked
* functions without a lot of arguments. "argc" and "argv" are also
* copied, so that they can be changed. */
@@ -1496,6 +1504,9 @@
if (garbage_collect_at_exit)
garbage_collect();
#endif
+#if defined(WIN32) && defined(FEAT_MBYTE)
+ free_cmd_argsW();
+#endif
mch_exit(exitval);
}
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 871afad..b578680 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -277,10 +277,6 @@
AnsiUpperBuff(toupper_tab, 256);
AnsiLowerBuff(tolower_tab, 256);
#endif
-
-#if defined(FEAT_MBYTE) && !defined(FEAT_GUI)
- (void)get_cmd_argsW(NULL);
-#endif
}
diff --git a/src/os_win32.c b/src/os_win32.c
index dd57141..7192c51 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6461,6 +6461,7 @@
int argc = 0;
int i;
+ free_cmd_argsW();
ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
if (ArglistW != NULL)
{
@@ -6493,7 +6494,11 @@
global_argc = argc;
global_argv = argv;
if (argc > 0)
+ {
+ if (used_file_indexes != NULL)
+ free(used_file_indexes);
used_file_indexes = malloc(argc * sizeof(int));
+ }
if (argvp != NULL)
*argvp = argv;
diff --git a/src/version.c b/src/version.c
index 838c1d6..18ea863 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 432,
+/**/
431,
/**/
430,