http://bugs.winehq.org/show_bug.cgi?id=9356
--- Comment #16 from Damjan Jovanovic damjan.jov@gmail.com 2007-11-25 23:32:12 --- Created an attachment (id=9347) --> (http://bugs.winehq.org/attachment.cgi?id=9347) set the fd back to blocking if necessary
This part of the patch that causes the regression looks suspicious:
- /* set the fd back to blocking if necessary */ - if (options & (FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT)) - fcntl( unix_fd, F_SETFL, 0 );
I'm guessing in the new code it isn't set to blocking, leading to EAGAIN on reads. If that's the case, the attached patch should fix it. Please try it and report back.
(Bloody serial ports. We really need regression tests for the them.)