summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/fhandler_signalfd.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/winsup/cygwin/fhandler_signalfd.cc b/winsup/cygwin/fhandler_signalfd.cc
index 1bb0d1422..1547c64cd 100644
--- a/winsup/cygwin/fhandler_signalfd.cc
+++ b/winsup/cygwin/fhandler_signalfd.cc
@@ -112,13 +112,11 @@ fhandler_signalfd::read (void *ptr, size_t& len)
? (PLARGE_INTEGER) &poll : NULL);
if (ret == -1)
{
- if (curlen == 0)
- {
- if (get_errno () == EINTR && curlen == 0)
- continue;
- set_errno (old_errno);
- }
- len = curlen ?: (size_t) -1;
+ /* If we already read a signal so the buffer isn't empty, just
+ return success. */
+ if (curlen > 0)
+ break;
+ len = -1;
return;
}
__try