Index: fhandler_serial.cc =================================================================== RCS file: /cvs/src/src/winsup/cygwin/fhandler_serial.cc,v retrieving revision 1.47 diff -u -p -r1.47 fhandler_serial.cc --- fhandler_serial.cc 11 Dec 2003 18:07:42 -0000 1.47 +++ fhandler_serial.cc 22 Jan 2004 22:38:04 -0000 @@ -133,16 +133,16 @@ fhandler_serial::raw_read (void *ptr, si 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,9 @@ fhandler_serial::raw_write (const void * 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;