aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2020-03-12 16:07:01 +0100
committerCorinna Vinschen <corinna@vinschen.de>2020-03-12 16:07:01 +0100
commit57a80207ff5f7045a45668cee827ce7f6906ccc8 (patch)
treefcc509af257517e6a33af06d08d7b01505a2eb94
parentbd22d2f91e792e8b57c748da2204ef669a6a75ec (diff)
downloadnewlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.zip
newlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.tar.gz
newlib-57a80207ff5f7045a45668cee827ce7f6906ccc8.tar.bz2
Cygwin: serial: try fix o_nonblock
-rw-r--r--winsup/cygwin/fhandler_serial.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc
index 69e5768..f92fc70 100644
--- a/winsup/cygwin/fhandler_serial.cc
+++ b/winsup/cygwin/fhandler_serial.cc
@@ -68,6 +68,16 @@ fhandler_serial::raw_read (void *ptr, size_t& ulen)
goto err;
else if (ev)
termios_printf ("error detected %x", ev);
+ else if (is_nonblocking ())
+ {
+ if (!st.cbInQue)
+ {
+ tot = -1;
+ set_errno (EAGAIN);
+ goto out;
+ }
+ inq = st.cbInQue;
+ }
else if (st.cbInQue && !vtime_)
inq = st.cbInQue;
else if (!is_nonblocking () && !overlapped_armed)