[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