]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix segfault in profiler after pdump load
authorDaniel Colascione <dancol@dancol.org>
Thu, 17 Jan 2019 01:26:19 +0000 (20:26 -0500)
committerDaniel Colascione <dancol@dancol.org>
Thu, 17 Jan 2019 01:26:19 +0000 (20:26 -0500)
Move initialization of the profiler's hash test to static
initialization from the syms function so that pdumper doesn't need to
bother capturing it in any special way.

* src/profiler.c (cmpfn_profiler, hashfn_profiler):
forward declare.
(hashtest_profiler): statically initialize.
(syms_of_profiler): remove dynamic initialization of
hashtest_profiler.

src/profiler.c

index 76245750ada17c15f7fc68b3f8b6fedcf64ec96e..a98d967b2a1d4c9e36903234e59d6bf21610a839 100644 (file)
@@ -36,7 +36,20 @@ saturated_add (EMACS_INT a, EMACS_INT b)
 
 typedef struct Lisp_Hash_Table log_t;
 
-static struct hash_table_test hashtest_profiler;
+static bool cmpfn_profiler (
+  struct hash_table_test *, Lisp_Object, Lisp_Object);
+
+static EMACS_UINT hashfn_profiler (
+  struct hash_table_test *, Lisp_Object);
+
+static const struct hash_table_test hashtest_profiler =
+  {
+   LISPSYM_INITIALLY (Qprofiler_backtrace_equal),
+   LISPSYM_INITIALLY (Qnil) /* user_hash_function */,
+   LISPSYM_INITIALLY (Qnil) /* user_cmp_function */,
+   cmpfn_profiler,
+   hashfn_profiler,
+  };
 
 static Lisp_Object
 make_log (EMACS_INT heap_size, EMACS_INT max_stack_depth)
@@ -587,12 +600,6 @@ to make room for new entries.  */);
 
   DEFSYM (Qprofiler_backtrace_equal, "profiler-backtrace-equal");
 
-  hashtest_profiler.name = Qprofiler_backtrace_equal;
-  hashtest_profiler.user_hash_function = Qnil;
-  hashtest_profiler.user_cmp_function = Qnil;
-  hashtest_profiler.cmpfn = cmpfn_profiler;
-  hashtest_profiler.hashfn = hashfn_profiler;
-
   defsubr (&Sfunction_equal);
 
 #ifdef PROFILER_CPU_SUPPORT