changeset 16873:205ec6c5d8f3

* (interrupt_signal): Make emergency exit work on MSDOS frames. Block further SIGINTs while `interrupt_signal' runs.
author Eli Zaretskii <eliz@gnu.org>
date Thu, 16 Jan 1997 13:12:51 +0000
parents 1efa81ac7e5a
children 0b914fcd97a1
files src/keyboard.c
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Thu Jan 16 12:50:00 1997 +0000
+++ b/src/keyboard.c	Thu Jan 16 13:12:51 1997 +0000
@@ -7462,11 +7462,17 @@
 
   cancel_echoing ();
 
-  if (!NILP (Vquit_flag) && FRAME_TERMCAP_P (selected_frame))
+  if (!NILP (Vquit_flag)
+      && (FRAME_TERMCAP_P (selected_frame) || FRAME_MSDOS_P (selected_frame)))
     {
+      /* If SIGINT isn't blocked, don't let us be interrupted by
+	 another SIGINT, it might be harmful due to non-reentrancy
+	 in I/O functions.  */
+      sigblock (sigmask (SIGINT));
+
       fflush (stdout);
       reset_sys_modes ();
-      sigfree ();
+
 #ifdef SIGTSTP			/* Support possible in later USG versions */
 /*
  * On systems which can suspend the current process and return to the original
@@ -7545,6 +7551,7 @@
 #endif /* not MSDOS */
       fflush (stdout);
       init_sys_modes ();
+      sigfree ();
     }
   else
     {