Cygwin: pty: Fix a bug in input transfer for GDB.

- With this patch, not only NL but also CR is treated as a line end
  in the code checking if input transfer is necessary.
This commit is contained in:
Takashi Yano via Cygwin-patches 2021-02-15 03:47:51 +09:00 committed by Corinna Vinschen
parent f206417894
commit 2b94fad48e
1 changed files with 3 additions and 2 deletions

View File

@ -1181,7 +1181,7 @@ fhandler_pty_slave::mask_switch_to_pcon_in (bool mask, bool xfer)
/* In GDB, transfer input based on setpgid() does not work because /* In GDB, transfer input based on setpgid() does not work because
GDB may not set terminal process group properly. Therefore, GDB may not set terminal process group properly. Therefore,
transfer input here if isHybrid is set. */ transfer input here if isHybrid is set. */
if (get_ttyp ()->switch_to_pcon_in && !!masked != mask && xfer && isHybrid) if (isHybrid && !!masked != mask && xfer)
{ {
if (mask && get_ttyp ()->pcon_input_state_eq (tty::to_nat)) if (mask && get_ttyp ()->pcon_input_state_eq (tty::to_nat))
{ {
@ -1471,7 +1471,8 @@ wait_retry:
out: out:
termios_printf ("%d = read(%p, %lu)", totalread, ptr, len); termios_printf ("%d = read(%p, %lu)", totalread, ptr, len);
len = (size_t) totalread; len = (size_t) totalread;
mask_switch_to_pcon_in (false, totalread > 0 && ptr0[totalread - 1] == '\n'); bool saw_eol = totalread > 0 && strchr ("\r\n", ptr0[totalread -1]);
mask_switch_to_pcon_in (false, saw_eol);
} }
int int