- When non-cygwin app is started in console, console mode is set to
  tty::native. However, if stdin is redirected, current code does not
  set the input mode of the console. In this case, if the app opens
  "CONIN$", the console mode will not be appropriate for non-cygwin
  app. This patch fixes the issue.

Addresses:
https://github.com/GitCredentialManager/git-credential-manager/issues/576
---
 winsup/cygwin/spawn.cc | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 81dba5a94..a7e25cc20 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -627,23 +627,18 @@ child_info_spawn::worker (const char *prog_arg, const 
char *const *argv,
            }
          else if (fh && fh->get_major () == DEV_CONS_MAJOR)
            {
-             fhandler_console *cons = (fhandler_console *) fh;
-             if (!iscygwin ())
+             if (!iscygwin () && cons_native == NULL)
                {
-                 if (cons_native == NULL)
-                   {
-                     cons_native = cons;
-                     cons_ti = &((tty *)cons->tc ())->ti;
-                     cons_owner = cons->get_owner ();
-                   }
+                 fhandler_console *cons = (fhandler_console *) fh;
+                 cons_native = cons;
+                 cons_ti = &((tty *)cons->tc ())->ti;
+                 cons_owner = cons->get_owner ();
                  tty::cons_mode conmode =
                    (ctty_pgid && ctty_pgid == myself->pgid) ?
                    tty::native : tty::restore;
-                 if (fd == 0)
-                   fhandler_console::set_input_mode (conmode,
+                 fhandler_console::set_input_mode (conmode,
                                           cons_ti, cons->get_handle_set ());
-                 else if (fd == 1 || fd == 2)
-                   fhandler_console::set_output_mode (conmode,
+                 fhandler_console::set_output_mode (conmode,
                                           cons_ti, cons->get_handle_set ());
                }
            }
-- 
2.35.1

Reply via email to