aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/fhandler_tty.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler_tty.cc')
-rw-r--r--winsup/cygwin/fhandler_tty.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
index f0b2cd6..34cff2a 100644
--- a/winsup/cygwin/fhandler_tty.cc
+++ b/winsup/cygwin/fhandler_tty.cc
@@ -2845,6 +2845,11 @@ fhandler_pty_slave::setup_pseudoconsole (bool nopcon)
HPCON_INTERNAL *hp = (HPCON_INTERNAL *) get_ttyp ()->h_pseudo_console;
get_ttyp ()->h_pcon_write_pipe = hp->hWritePipe;
}
+
+ if (get_ttyp ()->previous_code_page)
+ SetConsoleCP (get_ttyp ()->previous_code_page);
+ if (get_ttyp ()->previous_output_code_page)
+ SetConsoleOutputCP (get_ttyp ()->previous_output_code_page);
return true;
cleanup_pcon_in:
@@ -2884,6 +2889,8 @@ fhandler_pty_slave::close_pseudoconsole (tty *ttyp)
if (ttyp->h_pseudo_console)
{
ttyp->wait_pcon_fwd ();
+ ttyp->previous_code_page = GetConsoleCP ();
+ ttyp->previous_output_code_page = GetConsoleOutputCP ();
FreeConsole ();
AttachConsole (ATTACH_PARENT_PROCESS);
HPCON_INTERNAL *hp = (HPCON_INTERNAL *) ttyp->h_pseudo_console;