]> git.eshelyaron.com Git - emacs.git/commitdiff
Do not call `gensym' too early when loading a dump file.
authorNicolás Bértolo <nicolasbertolo@gmail.com>
Sat, 30 May 2020 00:03:00 +0000 (21:03 -0300)
committerAndrea Corallo <akrl@sdf.org>
Sun, 31 May 2020 08:47:11 +0000 (09:47 +0100)
This happened when subr.eln was not the first native compilation unit
to be loaded. register_native_comp_unit() is called when loading a
native compilation unit and that in turn used to call `gensym', which
was not loaded yet. This led to a SIGSEGV.

* src/comp.c (register_native_comp_unit): Replace the call to `gensym'
with an ad-hoc counter.

src/comp.c

index 32a98173d53f50332bc9ec52e169f320b4d8870f..d3bff1e4cfe5e6b0d05f04196c4266b3a2cbcf9f 100644 (file)
@@ -4120,7 +4120,12 @@ static void
 register_native_comp_unit (Lisp_Object comp_u)
 {
 #ifdef WINDOWSNT
-  Fputhash (CALL1I (gensym, Qnil), comp_u, all_loaded_comp_units_h);
+  /* We have to do this since we can't use `gensym'. This function is
+     called early when loading a dump file and subr.el may not have
+     been loaded yet.  */
+  static intmax_t count;
+
+  Fputhash (make_int (count++), comp_u, all_loaded_comp_units_h);
 #endif
 }