aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Yano <takashi.yano@nifty.ne.jp>2022-05-08 22:04:38 +0900
committerTakashi Yano <takashi.yano@nifty.ne.jp>2022-05-08 22:09:17 +0900
commit8ff0657295c2f15461d628cb23774f729226c88e (patch)
treebe9f1b8d2027d1c8aa4c47cddf23708b83175abb
parent3c4ed01b18ef858de0bd1baaaa583c370ee00c12 (diff)
downloadnewlib-8ff0657295c2f15461d628cb23774f729226c88e.zip
newlib-8ff0657295c2f15461d628cb23774f729226c88e.tar.gz
newlib-8ff0657295c2f15461d628cb23774f729226c88e.tar.bz2
Cygwin: pty: Change the condition to send Ctrl-C event.
- Previously, non-cygwin app started by "script -c <non-cygwin app>" receives Ctrl-C twice. This patch fixes the issue.
-rw-r--r--winsup/cygwin/fhandler_termios.cc9
1 files changed, 3 insertions, 6 deletions
diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc
index 0bc3600..737bbea 100644
--- a/winsup/cygwin/fhandler_termios.cc
+++ b/winsup/cygwin/fhandler_termios.cc
@@ -324,9 +324,6 @@ fhandler_termios::process_sigs (char c, tty* ttyp, fhandler_termios *fh)
pid_t pgid = ttyp->pgid;
/* The name *_nat stands for 'native' which means non-cygwin apps. */
- pinfo leader (pgid);
- bool cyg_leader = /* The process leader is a cygwin process. */
- leader && !(leader->process_state & PID_NOTCYGWIN);
bool ctrl_c_event_sent = false;
bool need_discard_input = false;
bool pg_with_nat = false; /* The process group has non-cygwin processes. */
@@ -385,9 +382,9 @@ fhandler_termios::process_sigs (char c, tty* ttyp, fhandler_termios *fh)
if ((p->process_state & PID_NEW_PG)
&& (p->process_state & PID_NOTCYGWIN))
GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, p->dwProcessId);
- else if ((!fh || fh->need_send_ctrl_c_event () || cyg_leader)
- && !ctrl_c_event_sent) /* cyg_leader is needed by GDB
- with non-cygwin inferior */
+ else if ((!fh || fh->need_send_ctrl_c_event ()
+ || p->exec_dwProcessId == p->dwProcessId)
+ && !ctrl_c_event_sent)
{
GenerateConsoleCtrlEvent (CTRL_C_EVENT, 0);
ctrl_c_event_sent = true;