From e82989757f42e95bf72a2a55de415a8162a55dc3 Mon Sep 17 00:00:00 2001 From: Jens Schmidt Date: Wed, 2 Apr 2025 22:48:31 +0200 Subject: Use a pristine copy of argv to restart Emacs argv as left after main has proccessed the command-line can differ both in order and contents of the original command-line arguments, which can lead to surprising results when restarting emacs on the cooked argv through `kill-emacs'. Starting from that observation, consistenly use variables 'initial_cmdline' on Windows, 'initial_argc', 'initial_argv' on non-Windows, and 'initial_argv0' in all ports. * src/lisp.h: Declare 'initial_argv0', limit declaration of 'initial_argv' and 'initial_argc' to non-Windows ports. * src/emacs.c: Likewise, but for the definitions. (init_cmdargs): Move initialization of 'initial_argv' and 'initial_argc' ... (copy_args) [!WINDOWSNT]: ... to this new function ... (main): ... and call that in 'main', also initializing 'initial_argv0' before the command-line processing. * src/emacs.c (Fkill_emacs): * src/pgtkterm.c (pgtk_term_init): * src/sysdep.c (emacs_perror): * src/xterm.c (x_term_init): Use 'initial_argv0' where only that is required. (Bug#77389) --- src/pgtkterm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pgtkterm.c') diff --git a/src/pgtkterm.c b/src/pgtkterm.c index a2e23a5616b..3d59a239ccd 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -7075,7 +7075,7 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name) argv[argc] = 0; argc = 0; - argv[argc++] = initial_argv[0]; + argv[argc++] = initial_argv0; if (strlen (dpy_name) != 0) { -- cgit v1.2.1