Cygwin: pty: Prevent potential errno overwriting.

- In push_to_pcon_screenbuffer(), open() and ioctl() are called.
  Since push_to_pcon_screenbuffer() is called in read() and write(),
  errno which is set in read() and write() code may be overwritten
  in open() or ioctl() call. This patch prevent this situation.
This commit is contained in:
Takashi Yano 2020-02-10 20:42:45 +09:00 committed by Corinna Vinschen
parent 2de74af22b
commit 2379142bc5

View File

@ -1412,10 +1412,13 @@ fhandler_pty_slave::push_to_pcon_screenbuffer (const char *ptr, size_t len,
while (!GetConsoleMode (get_output_handle (), &dwMode))
{
termios_printf ("GetConsoleMode failed, %E");
int errno_save = errno;
/* Re-open handles */
this->open (0, 0);
/* Fix pseudo console window size */
this->ioctl (TIOCSWINSZ, &get_ttyp ()->winsize);
if (errno != errno_save)
set_errno (errno_save);
if (++retry_count > 3)
goto cleanup;
}