emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master cc5cd4de93d: Fix setup of coding-systems on MS-Windows


From: Eli Zaretskii
Subject: master cc5cd4de93d: Fix setup of coding-systems on MS-Windows
Date: Sun, 5 Jan 2025 00:57:49 -0500 (EST)

branch: master
commit cc5cd4de93d1e5ba205cbf0c370aef4559bc342b
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Fix setup of coding-systems on MS-Windows
    
    * src/emacs.c (main) [HAVE_PDUMPER] [WINDOWSNT]: Call
    'w32_init_file_name_codepage' again after loading the pdumper
    file.
    * src/w32.c (w32_init_file_name_codepage) [HAVE_PDUMPER]:
    Reinitialize additional variables.  (Bug#75207)
---
 src/emacs.c | 13 ++++++++++++-
 src/w32.c   | 13 +++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/emacs.c b/src/emacs.c
index c1e0c9f3a57..896f219baab 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1419,7 +1419,18 @@ android_emacs_init (int argc, char **argv, char 
*dump_file)
 
 #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);
diff --git a/src/w32.c b/src/w32.c
index a49399153aa..deeca031f64 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -1685,6 +1685,19 @@ w32_init_file_name_codepage (void)
 {
   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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]