handle CTRL-C in ta6nt without expression editor
original commit: 7ca7ad78a278278df55140617a3112f5271f42d8
This commit is contained in:
parent
54112e9bf1
commit
12081203af
13
c/new-io.c
13
c/new-io.c
|
@ -460,11 +460,22 @@ ptr S_bytevector_read(ptr file, ptr bv, iptr start, iptr count, IBOOL gzflag) {
|
|||
SetLastError(0);
|
||||
m = read_console(&BVIT(bv,start), (IO_SIZE_T)count);
|
||||
error_code = GetLastError();
|
||||
SetConsoleCtrlHandler(NULL, FALSE);
|
||||
if (m == 0 && error_code == 0x3e3) {
|
||||
/* Guard against Windows calling the ConsoleCtrlHandler after we
|
||||
* turn it back on by waiting a bit. */
|
||||
Sleep(1);
|
||||
#ifdef PTHREADS
|
||||
/* threaded io.ss doesn't handle interrupts because
|
||||
* with-tc-mutex disables them, so bail out. */
|
||||
SetConsoleCtrlHandler(NULL, FALSE);
|
||||
REACTIVATEandUNLOCK(tc, bv)
|
||||
S_noncontinuable_interrupt();
|
||||
#else
|
||||
KEYBOARDINTERRUPTPENDING(tc) = Strue;
|
||||
SOMETHINGPENDING(tc) = Strue;
|
||||
#endif
|
||||
}
|
||||
SetConsoleCtrlHandler(NULL, FALSE);
|
||||
} else
|
||||
#endif /* WIN32 */
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user