diff options
author | Christopher Faylor <me@cgf.cx> | 2002-12-14 19:11:42 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-12-14 19:11:42 +0000 |
commit | 373c3857c2e62f045fe70eee97fd9035b03cabd7 (patch) | |
tree | c64930d36d8db92d3c5414639ff1760104aa64c7 /winsup/cygwin/fhandler.cc | |
parent | 3627f682fe535c3b04b1a3fc02637d2061e9e1c8 (diff) | |
download | cygnal-373c3857c2e62f045fe70eee97fd9035b03cabd7.tar.gz cygnal-373c3857c2e62f045fe70eee97fd9035b03cabd7.tar.bz2 cygnal-373c3857c2e62f045fe70eee97fd9035b03cabd7.zip |
* fhandler.cc (fhandler_base::read): Signal event, if necessary, and raw_read
hasn't done so.
Diffstat (limited to 'winsup/cygwin/fhandler.cc')
-rw-r--r-- | winsup/cygwin/fhandler.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index a96f99c69..f73b8baf4 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -510,6 +510,7 @@ fhandler_base::read (void *in_ptr, size_t& len) { char *ptr = (char *) in_ptr; ssize_t copied_chars = 0; + bool need_signal = !!read_state; int c; while (len) @@ -534,6 +535,7 @@ fhandler_base::read (void *in_ptr, size_t& len) } raw_read (ptr + copied_chars, len); + need_signal = false; if (!copied_chars) /* nothing */; else if ((ssize_t) len > 0) @@ -601,6 +603,9 @@ fhandler_base::read (void *in_ptr, size_t& len) #endif out: + if (need_signal) + SetEvent (read_state); + debug_printf ("returning %d, %s mode", len, get_r_binary () ? "binary" : "text"); return; |