[newlib-cygwin] Cygwin: pty: Fix state mismatch caused in mintty.
Corinna Vinschen
corinna@sourceware.org
Mon Feb 10 10:04:00 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=2de74af22be0ccf75f094caf48c8beb36a49d8c9
commit 2de74af22be0ccf75f094caf48c8beb36a49d8c9
Author: Takashi Yano <takashi.yano@nifty.ne.jp>
Date: Sun Feb 9 23:47:30 2020 +0900
Cygwin: pty: Fix state mismatch caused in mintty.
- PTY has a bug reported in:
https://cygwin.com/ml/cygwin/2020-02/msg00067.html.
This is the result of state mismatch between real pseudo console
attaching state and state variable. This patch fixes the issue.
Diff:
---
winsup/cygwin/fhandler_tty.cc | 16 ++++++++++++++--
winsup/cygwin/fork.cc | 2 ++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index f2fd680..260776a 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -65,6 +65,12 @@ static bool isHybrid;
static bool do_not_reset_switch_to_pcon;
static bool freeconsole_on_close = true;
+void
+clear_pcon_attached_to (void)
+{
+ pcon_attached_to = -1;
+}
+
static void
set_switch_to_pcon (void)
{
@@ -727,7 +733,10 @@ fhandler_pty_slave::~fhandler_pty_slave ()
{
init_console_handler (false);
if (freeconsole_on_close)
- FreeConsole ();
+ {
+ FreeConsole ();
+ pcon_attached_to = -1;
+ }
}
}
}
@@ -2988,7 +2997,10 @@ fhandler_pty_slave::fixup_after_exec ()
{
init_console_handler (false);
if (freeconsole_on_close)
- FreeConsole ();
+ {
+ FreeConsole ();
+ pcon_attached_to = -1;
+ }
}
}
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
index a8f0fb8..691d081 100644
--- a/winsup/cygwin/fork.cc
+++ b/winsup/cygwin/fork.cc
@@ -161,6 +161,8 @@ frok::child (volatile char * volatile here)
}
}
}
+ extern void clear_pcon_attached_to (void); /* fhandler_tty.cc */
+ clear_pcon_attached_to ();
HANDLE& hParent = ch.parent;
More information about the Cygwin-cvs
mailing list