From da915a3aa6868a0815616ff4ba7904081968de23 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Mon, 8 Dec 2003 06:27:05 +0000 Subject: * fhandler.h (fhandler_tty_slave::ttyname): Use name from pc since it is guaranteed to be accurate. * fhandler_tty.cc (fhandler_tty_slave::open): Increment open_fhs appropriate when copying ctty. (fhandler_tty_slave::close): Remove special case handling for exit_state. Use ctty < 0 check instead. (fhandler_tty_common::close): Set io_handle to NULL after closing. * syscalls.cc (close_all_files): Specifically close cygheap->ctty, if appropriate. --- winsup/cygwin/fhandler_tty.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'winsup/cygwin/fhandler_tty.cc') diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index c5718a380..3cea6b9d0 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -454,6 +454,7 @@ fhandler_tty_slave::open (int flags, mode_t) else { *this = cygheap->ctty; + fhandler_console::open_fhs++; termios_printf ("copied tty fhandler from cygheap"); return 1; } @@ -601,7 +602,7 @@ fhandler_tty_slave::close () if (!--fhandler_console::open_fhs && myself->ctty == -1) FreeConsole (); termios_printf ("decremented open_fhs %d", fhandler_console::open_fhs); - if (!exit_state && get_io_handle () == cygheap->ctty.get_io_handle ()) + if (myself->ctty >= 0 && get_io_handle () == cygheap->ctty.get_io_handle ()) return 1; return fhandler_tty_common::close (); } @@ -1173,6 +1174,8 @@ fhandler_tty_common::close () if (!ForceCloseHandle1 (get_output_handle (), to_pty)) termios_printf ("CloseHandle (get_output_handle ()<%p>), %E", get_output_handle ()); + set_io_handle (NULL); + inuse = NULL; termios_printf ("tty%d <%p,%p> closed", get_unit (), get_handle (), get_output_handle ()); return 0; -- cgit v1.2.3