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);

Reply via email to