Mercurial > emacs
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 {