- Currently, _get_osfhandle() returns input handle for pty even for stdout and stdout. This patch fixes the issue. Also, setup_locale() is called to make sure the charset conversion works for output. --- winsup/cygwin/syscalls.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 6ba4f10f7..205d15951 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3223,7 +3223,18 @@ _get_osfhandle (int fd) cygheap_fdget cfd (fd); if (cfd >= 0) - res = (long) cfd->get_handle (); + { + if (cfd->get_major () == DEV_PTYS_MAJOR) + { + fhandler_pty_slave *ptys = + (fhandler_pty_slave *) (fhandler_base *) cfd; + ptys->setup_locale (); + } + if (fd == 1 || fd == 2) + res = (long) cfd->get_output_handle (); + else + res = (long) cfd->get_handle_cyg (); + } else res = -1; -- 2.30.1