From a7cde2b98a658522f552a7ac7ae0a9ef07981e0a Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 17 Jan 2001 14:57:09 +0000 Subject: * autoload.cc (LoadDLLinitfunc): Remove debugging statement. * exceptions.cc (sig_handle_tty_stop): Move setting of PID_STOPPED to earlier in interrupt. ((interrupt_setup): i.e., here. (sig_handle): Don't queue multiple SIGSTOPS. * fhandler.h (bg_check_types): Enumerate return value of bg_check for clarity. * signal.cc (kill_pgrp): Minor cleanup. * fhandler_termios.cc (fhandler_termios::bg_check): Use enumerated type for function return. Don't raise signal if a signal is already queued. * fhandler_console.cc (fhandler_console::read): Use enumerated return type for bg_check. * select.cc: Ditto, throughout. * read.cc: Ditto, throughout. * termios.cc: Ditto, throughout. (_read): YA interrupt detect simplification. * wait.cc (wait4): Ditto. --- winsup/cygwin/wait.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'winsup/cygwin/wait.cc') diff --git a/winsup/cygwin/wait.cc b/winsup/cygwin/wait.cc index 852c7f453..7a106f970 100644 --- a/winsup/cygwin/wait.cc +++ b/winsup/cygwin/wait.cc @@ -51,9 +51,11 @@ wait4 (int intpid, int *status, int options, struct rusage *r) waitq *w; HANDLE waitfor; sigframe thisframe (mainthread); + bool sawsig; beg: - if (options & ~(WNOHANG | WUNTRACED)) + sawsig = 0; + if (options & ~(WNOHANG | WUNTRACED)) { set_errno (EINVAL); return -1; @@ -97,6 +99,7 @@ beg: if (w->status == -1) { set_sig_errno (EINTR); + sawsig = 1; res = -1; } else if (res != WAIT_OBJECT_0) @@ -110,7 +113,7 @@ beg: *status = w->status; done: - if (res < 0 && get_errno () == EINTR && call_signal_handler ()) + if (sawsig && call_signal_handler ()) goto beg; sigproc_printf ("intpid %d, status %p, w->status %d, options %d, res %d", intpid, status, w->status, options, res); -- cgit v1.2.3