summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r--winsup/cygwin/fhandler.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index deb1ade16..b64b09047 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -1887,13 +1887,15 @@ fhandler_base_overlapped::wait_overlapped (bool inres, bool writing, DWORD *byte
HANDLE h = writing ? get_output_handle () : get_handle ();
CancelIo (h);
ResetEvent (get_overlapped ());
- if (res == overlapped_error)
- __seterrno_from_win_error (err);
*bytes = (DWORD) -1;
+ if (res == overlapped_error)
+ {
+ __seterrno_from_win_error (err);
+ if (writing && (err == ERROR_NO_DATA || err == ERROR_BROKEN_PIPE))
+ raise (SIGPIPE);
+ }
}
- if (writing && (err == ERROR_NO_DATA || err == ERROR_BROKEN_PIPE))
- raise (SIGPIPE);
return res;
}