summaryrefslogtreecommitdiff
path: root/src/profiler.c
diff options
context:
space:
mode:
authorDaniel Colascione <dancol@dancol.org>2019-01-16 20:26:19 -0500
committerDaniel Colascione <dancol@dancol.org>2019-01-16 20:26:19 -0500
commit191a5568db35f3a56f26431ca4722175d38c684f (patch)
tree982f88df4a7123afc6ee5502420f88ae6df1f11e /src/profiler.c
parent27f53bd6886c1a76ac7058ae7b90cacc317aadea (diff)
downloademacs-191a5568db35f3a56f26431ca4722175d38c684f.tar.gz
Fix segfault in profiler after pdump load
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.
Diffstat (limited to 'src/profiler.c')
-rw-r--r--src/profiler.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/profiler.c b/src/profiler.c
index 76245750ada..a98d967b2a1 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -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