summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/fhandler_tty.cc16
-rw-r--r--winsup/cygwin/fork.cc2
2 files changed, 16 insertions, 2 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index f2fd680ea..260776a56 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 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;