]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid endless loop when handling fatal signal.
authorJan Djärv <jan.h.d@swipnet.se>
Fri, 20 Feb 2015 07:46:38 +0000 (08:46 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Fri, 20 Feb 2015 07:46:38 +0000 (08:46 +0100)
* 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.

src/ChangeLog
src/emacs.c

index 1126dde74502059aa9b8b5e7a519e82e3f2722e9..dc33e417ef402113804320b61d4c476b4f50829d 100644 (file)
@@ -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
index f933eb1443d2774d1ceb26cdaf11ebddd78b55cd..590579907ff55405a6273998ee9ded5bd5e811d1 100644 (file)
@@ -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));