[PATCH] Cygwin: pty: Fix state mismatch caused in mintty.
Takashi Yano
takashi.yano@nifty.ne.jp
Sun Feb 9 14:47:00 GMT 2020
- 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.
---
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 5df5fe752..c36730d41 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;
+ }
}
}
}
@@ -2982,7 +2991,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 a8f0fb82a..691d08137 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;
--
2.21.0
More information about the Cygwin-patches
mailing list