#ifdef HAVE_PDUMPER
if (attempt_load_pdump)
- initial_emacs_executable = load_pdump (argc, argv, dump_file);
+ {
+ initial_emacs_executable = load_pdump (argc, argv, dump_file);
+#ifdef WINDOWSNT
+ /* Reinitialize the codepage for file names, needed to decode
+ non-ASCII file names during startup. This is needed because
+ loading the pdumper file above assigns to those variables values
+ from the dump stage, which might be incorrect, if dumping was done
+ on a different system. */
+ if (dumped_with_pdumper_p ())
+ w32_init_file_name_codepage ();
+#endif
+ }
#else
ptrdiff_t bufsize;
initial_emacs_executable = find_emacs_executable (argv[0], &bufsize);
{
file_name_codepage = CP_ACP;
w32_ansi_code_page = CP_ACP;
+#ifdef HAVE_PDUMPER
+ /* If we were dumped with pdumper, this function will be called after
+ loading the pdumper file, and needs to reset the following
+ variables that come from the dump stage, which could be on a
+ different system with different default codepages. Then, the
+ correct value of w32-ansi-code-page will be assigned by
+ globals_of_w32fns, which is called from 'main'. Until that call
+ happens, w32-ansi-code-page will have the value of CP_ACP, which
+ stands for the default ANSI codepage. The other variables will be
+ computed by codepage_for_filenames below. */
+ Vdefault_file_name_coding_system = Qnil;
+ Vfile_name_coding_system = Qnil;
+#endif
}
/* Produce a Windows ANSI codepage suitable for encoding file names.