summaryrefslogtreecommitdiff
path: root/src/emacs.c
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2015-02-20 08:46:38 +0100
committerJan Djärv <jan.h.d@swipnet.se>2015-02-20 08:46:38 +0100
commit51d475a8d8a07e0edec92addd4bf96eb1be23b48 (patch)
tree9af2c6b00a6119845604117e189c9bd15cba6cb8 /src/emacs.c
parent98cb7d9e4d7ff3e9cb8aad229e30dbd0a7963a8f (diff)
downloademacs-51d475a8d8a07e0edec92addd4bf96eb1be23b48.tar.gz
Avoid endless loop when handling fatal signal.
* src/emacs.c (terminate_due_to_signal): Move totally_unblock_input after setting fatal_error_in_progress, so gobble_input and *read_socket are not read if there are pending_signals.
Diffstat (limited to 'src/emacs.c')
-rw-r--r--src/emacs.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/emacs.c b/src/emacs.c
index f933eb1443d..590579907ff 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -345,13 +345,13 @@ _Noreturn void
terminate_due_to_signal (int sig, int backtrace_limit)
{
signal (sig, SIG_DFL);
- totally_unblock_input ();
/* If fatal error occurs in code below, avoid infinite recursion. */
if (! fatal_error_in_progress)
{
fatal_error_in_progress = 1;
+ totally_unblock_input ();
if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
Fkill_emacs (make_number (sig));