https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=38ab2b77e325bf5c9d25cb832f8b80c58ff80299
commit 38ab2b77e325bf5c9d25cb832f8b80c58ff80299 Author: Takashi Yano <takashi.y...@nifty.ne.jp> Date: Fri Nov 8 20:02:35 2024 +0900 Cygwin: console: Fix clean up conditions in close() Previously, the condition to clean up input/output mode was based on wrong premise. This patch fixes that. Fixes: 8ee8b0c974d7 ("Cygwin: console: Use GetCurrentProcessId() instead of myself->dwProcessId") Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp> (cherry picked from commit 30d266947842fec82cae9a190bc8b5bf2e108cd0) Diff: --- winsup/cygwin/fhandler/console.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 4efba61e2..2651e49a6 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -1976,7 +1976,8 @@ fhandler_console::close () acquire_output_mutex (mutex_timeout); - if (shared_console_info[unit]) + if (shared_console_info[unit] && !myself->cygstarted + && (dev_t) myself->ctty == get_device ()) { /* Restore console mode if this is the last closure. */ OBJECT_BASIC_INFORMATION obi; @@ -1984,8 +1985,7 @@ fhandler_console::close () status = NtQueryObject (get_handle (), ObjectBasicInformation, &obi, sizeof obi, NULL); if (NT_SUCCESS (status) - && obi.HandleCount <= (myself->cygstarted ? 2 : 3) - && (dev_t) myself->ctty == get_device ()) + && obi.HandleCount == (con.owner == GetCurrentProcessId () ? 2 : 3)) { /* Cleaning-up console mode for cygwin apps. */ set_output_mode (tty::restore, &get_ttyp ()->ti, &handle_set);