]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix segfaults when byte-compiling with native-compilation
authorEli Zaretskii <eliz@gnu.org>
Sat, 15 May 2021 17:44:40 +0000 (20:44 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 15 May 2021 17:44:40 +0000 (20:44 +0300)
* src/emacs.c (main): Call 'set_initial_minibuffer_mode' before
entering recursive-exit.
* src/minibuf.c (init_minibuf_once_for_pdumper): Don't call
'set_minibuffer_mode' here...
(set_initial_minibuffer_mode): ... set it in this new function.
(Bug#48446)
* src/lisp.h: Add prototype for 'set_initial_minibuffer_mode'.

src/emacs.c
src/lisp.h
src/minibuf.c

index 9157cd84a99357fe4efcb065a5a4b54fd5f77ac3..60a57a693cea74fd6b6c071c7e70636394d8ee1c 100644 (file)
@@ -2294,6 +2294,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
     Vdump_mode = build_string (dump_mode);
 
   /* Enter editor command loop.  This never returns.  */
+  set_initial_minibuffer_mode ();
   Frecursive_edit ();
   eassume (false);
 }
index f83c55f827da3585a31e4baba39ae2dd9d4cc28b..91b7a89d0f5c513613f1ee59660baecc3ec028e6 100644 (file)
@@ -4377,6 +4377,7 @@ extern EMACS_INT this_minibuffer_depth (Lisp_Object);
 extern EMACS_INT minibuf_level;
 extern Lisp_Object get_minibuffer (EMACS_INT);
 extern void init_minibuf_once (void);
+extern void set_initial_minibuffer_mode (void);
 extern void syms_of_minibuf (void);
 extern void barf_if_interaction_inhibited (void);
 
index b40d1fbafc879e9661434088e811f8f961bdd76b..cffb7fe787cfc1d49257b47cc9e49d4e0aee4778 100644 (file)
@@ -2271,6 +2271,13 @@ If no minibuffer is active, return nil.  */)
 
 \f
 
+void
+set_initial_minibuffer_mode (void)
+{
+  Lisp_Object minibuf = get_minibuffer (0);
+  set_minibuffer_mode (minibuf, 0);
+}
+
 static void init_minibuf_once_for_pdumper (void);
 
 void
@@ -2279,6 +2286,8 @@ init_minibuf_once (void)
   staticpro (&Vminibuffer_list);
   staticpro (&Vcommand_loop_level_list);
   pdumper_do_now_and_after_load (init_minibuf_once_for_pdumper);
+  /* Ensure our inactive minibuffer exists.  */
+  get_minibuffer (0);
 }
 
 static void
@@ -2296,9 +2305,6 @@ init_minibuf_once_for_pdumper (void)
   minibuf_prompt = Qnil;
   minibuf_save_list = Qnil;
   last_minibuf_string = Qnil;
-  /* Ensure our inactive minibuffer exists.  */
-  Lisp_Object minibuf = get_minibuffer (0);
-  set_minibuffer_mode (minibuf, 0);
 }
 
 void