From 373c3857c2e62f045fe70eee97fd9035b03cabd7 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 14 Dec 2002 19:11:42 +0000 Subject: * fhandler.cc (fhandler_base::read): Signal event, if necessary, and raw_read hasn't done so. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/fhandler.cc | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index a73b99016..d932e9c3a 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2002-12-14 Christopher Faylor + + * fhandler.cc (fhandler_base::read): Signal event, if necessary, and + raw_read hasn't done so. + 2002-12-14 Christopher Faylor * fhandler.cc (fhandler_base::raw_read): Reset priorities to minimize 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; -- cgit v1.2.3