aboutsummaryrefslogtreecommitdiffstats
path: root/src/profiler.c
diff options
context:
space:
mode:
authorPaul Eggert2012-10-03 22:52:49 -0700
committerPaul Eggert2012-10-03 22:52:49 -0700
commit88d69b7ddca305bb96d6e671300f6724e4f147dd (patch)
treeb2ee21fefc1376198029fba154c658c9b2cdf90f /src/profiler.c
parent2b794d6940aa7dc58e297b3649b7799190d71f64 (diff)
downloademacs-88d69b7ddca305bb96d6e671300f6724e4f147dd.tar.gz
emacs-88d69b7ddca305bb96d6e671300f6724e4f147dd.zip
* profiler.c (handle_profiler_signal): Inhibit pending signals too,
to avoid similar races. * keyboard.c (pending_signals): Now bool, not int.
Diffstat (limited to 'src/profiler.c')
-rw-r--r--src/profiler.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/profiler.c b/src/profiler.c
index 461aae3e09f..51580710f28 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -239,6 +239,7 @@ handle_profiler_signal (int signal)
239 else 239 else
240 { 240 {
241 Lisp_Object oquit; 241 Lisp_Object oquit;
242 bool saved_pending_signals;
242 EMACS_INT count = 1; 243 EMACS_INT count = 1;
243#ifdef HAVE_ITIMERSPEC 244#ifdef HAVE_ITIMERSPEC
244 if (profiler_timer_ok) 245 if (profiler_timer_ok)
@@ -252,12 +253,15 @@ handle_profiler_signal (int signal)
252 uses QUIT, which can call malloc, which can cause disaster in 253 uses QUIT, which can call malloc, which can cause disaster in
253 a signal handler. So inhibit QUIT. */ 254 a signal handler. So inhibit QUIT. */
254 oquit = Vinhibit_quit; 255 oquit = Vinhibit_quit;
256 saved_pending_signals = pending_signals;
255 Vinhibit_quit = Qt; 257 Vinhibit_quit = Qt;
258 pending_signals = 0;
256 259
257 eassert (HASH_TABLE_P (cpu_log)); 260 eassert (HASH_TABLE_P (cpu_log));
258 record_backtrace (XHASH_TABLE (cpu_log), count); 261 record_backtrace (XHASH_TABLE (cpu_log), count);
259 262
260 Vinhibit_quit = oquit; 263 Vinhibit_quit = oquit;
264 pending_signals = saved_pending_signals;
261 } 265 }
262} 266}
263 267