summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog4
-rw-r--r--src/keyboard.c5
2 files changed, 7 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 755e710c079..41771c92e93 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
2013-10-08 Paul Eggert <eggert@cs.ucla.edu>
+ Fix race where emacs aborts when sent SIGTERM (Bug#15534).
+ * keyboard.c (unblock_input_to): Don't process pending signals
+ if a fatal error is in progress.
+
* lisp.h (bits_word, BITS_WORD_MAX): New type and macro.
All uses of 'size_t' and 'SIZE_MAX' changed to use them, when
they're talking about words in Lisp bool vectors.
diff --git a/src/keyboard.c b/src/keyboard.c
index 05efe7c1312..4bfe47f3332 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -7090,7 +7090,8 @@ process_pending_signals (void)
}
/* Undo any number of BLOCK_INPUT calls down to level LEVEL,
- and also (if the level is now 0) reinvoke any pending signal. */
+ and reinvoke any pending signal if the level is now 0 and
+ a fatal error is not already in progress. */
void
unblock_input_to (int level)
@@ -7098,7 +7099,7 @@ unblock_input_to (int level)
interrupt_input_blocked = level;
if (level == 0)
{
- if (pending_signals)
+ if (pending_signals && !fatal_error_in_progress)
process_pending_signals ();
}
else if (level < 0)