Skip to content

Commit

Permalink
Cygwin: pty: Additional fix for transferring input at exit.
Browse files Browse the repository at this point in the history
The commit 3456e8b does not fix transferring input at exit
appropriately. If the more than one non-cygwin apps are executed
simultaneously and one of them is terminated, the pty master failed
to send input to the other non-cygwin apps. This patch fixes that.

Fixes: 3456e8b ("Cygwin: pty: Fix transferring type-ahead input between input pipes.")
Signed-off-by: Takashi Yano <[email protected]>
  • Loading branch information
tyan0 committed Jun 2, 2023
1 parent 3456e8b commit b553457
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions winsup/cygwin/fhandler/pty.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4128,7 +4128,14 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp,
DWORD force_switch_to)
{
ttyp->wait_fwd ();
if ((ttyp->pcon_activated || stdin_is_ptys)
DWORD current_pid = myself->exec_dwProcessId ?: myself->dwProcessId;
DWORD switch_to = force_switch_to;
WaitForSingleObject (p->pipe_sw_mutex, INFINITE);
if (!switch_to)
switch_to = get_console_process_id (current_pid, false, true, true);
if (!switch_to)
switch_to = get_console_process_id (current_pid, false, true, false);
if ((!switch_to && (ttyp->pcon_activated || stdin_is_ptys))
&& ttyp->pty_input_state_eq (tty::to_nat))
{
WaitForSingleObject (p->input_mutex, mutex_timeout);
Expand All @@ -4138,7 +4145,6 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp,
release_attach_mutex ();
ReleaseMutex (p->input_mutex);
}
WaitForSingleObject (p->pipe_sw_mutex, INFINITE);
if (ttyp->pcon_activated)
close_pseudoconsole (ttyp, force_switch_to);
else
Expand Down

0 comments on commit b553457

Please sign in to comment.