mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-20 16:01:10 +08:00
* fhandler_serial.cc (fhandler_serial::raw_write): Prevent a deadlock when the
input buffer overflows. (fhandler_serial::raw_read): Correct to print the actual error and only call PurgeComm when necessary.
This commit is contained in:
parent
ed1a95dc25
commit
a33df42223
@ -1,3 +1,10 @@
|
||||
2004-01-22 Brian Ford <ford@vss.fsi.com>
|
||||
|
||||
* fhandler_serial.cc (fhandler_serial::raw_write): Prevent a deadlock
|
||||
when the input buffer overflows.
|
||||
(fhandler_serial::raw_read): Correct to print the actual error and only
|
||||
call PurgeComm when necessary.
|
||||
|
||||
2004-01-22 Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* dcrt0.cc (reent_data): Make global.
|
||||
|
@ -133,16 +133,16 @@ fhandler_serial::raw_read (void *ptr, size_t& ulen)
|
||||
continue;
|
||||
|
||||
err:
|
||||
PurgeComm (get_handle (), PURGE_RXABORT);
|
||||
debug_printf ("err %E");
|
||||
if (GetLastError () == ERROR_OPERATION_ABORTED)
|
||||
n = 0;
|
||||
else
|
||||
if (GetLastError () != ERROR_OPERATION_ABORTED)
|
||||
{
|
||||
PurgeComm (get_handle (), PURGE_RXABORT);
|
||||
tot = -1;
|
||||
__seterrno ();
|
||||
break;
|
||||
}
|
||||
|
||||
n = 0;
|
||||
}
|
||||
|
||||
out:
|
||||
@ -169,6 +169,11 @@ fhandler_serial::raw_write (const void *ptr, size_t len)
|
||||
switch (GetLastError ())
|
||||
{
|
||||
case ERROR_OPERATION_ABORTED:
|
||||
DWORD ev;
|
||||
if (!ClearCommError (get_handle (), &ev, NULL))
|
||||
goto err;
|
||||
if (ev)
|
||||
termios_printf ("error detected %x", ev);
|
||||
continue;
|
||||
case ERROR_IO_PENDING:
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user