diff options
| author | Jan Djärv <jan.h.d@swipnet.se> | 2015-02-20 08:46:38 +0100 |
|---|---|---|
| committer | Jan Djärv <jan.h.d@swipnet.se> | 2015-02-20 08:46:38 +0100 |
| commit | 51d475a8d8a07e0edec92addd4bf96eb1be23b48 (patch) | |
| tree | 9af2c6b00a6119845604117e189c9bd15cba6cb8 | |
| parent | 98cb7d9e4d7ff3e9cb8aad229e30dbd0a7963a8f (diff) | |
| download | emacs-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.
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/emacs.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1126dde7450..dc33e417ef4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2015-02-20 Jan Djärv <jan.h.d@swipnet.se> + + * 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. + 2015-02-20 Paul Eggert <eggert@cs.ucla.edu> Simplify binary I/O configuration 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)); |
