diff options
| author | Paul Eggert | 2012-10-03 22:52:49 -0700 |
|---|---|---|
| committer | Paul Eggert | 2012-10-03 22:52:49 -0700 |
| commit | 88d69b7ddca305bb96d6e671300f6724e4f147dd (patch) | |
| tree | b2ee21fefc1376198029fba154c658c9b2cdf90f /src/profiler.c | |
| parent | 2b794d6940aa7dc58e297b3649b7799190d71f64 (diff) | |
| download | emacs-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.c | 4 |
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 | ||