[newlib-cygwin/cygwin-3_5-branch] Cygwin: console: Fix clean up conditions in close()

Takashi Yano tyan0@sourceware.org
Fri Nov 8 11:53:24 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=38ab2b77e325bf5c9d25cb832f8b80c58ff80299

commit 38ab2b77e325bf5c9d25cb832f8b80c58ff80299
Author: Takashi Yano <takashi.yano@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.yano@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);


More information about the Cygwin-cvs mailing list