From: Chong Yidong Date: Sat, 3 Nov 2012 16:36:23 +0000 (+0800) Subject: * process.c (wait_reading_process_output): Clean up last change. X-Git-Tag: emacs-24.3.90~173^2~9^2~177 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=85fabcb7ee546bf689727fb7b26f33414f55b46d;p=emacs.git * process.c (wait_reading_process_output): Clean up last change. --- diff --git a/src/ChangeLog b/src/ChangeLog index e26dd561495..193246c4fad 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-03 Chong Yidong + + * process.c (wait_reading_process_output): Clean up the last + change. + 2012-11-03 Jim Paris (tiny change) * process.c (wait_reading_process_output): Avoid a race condition diff --git a/src/process.c b/src/process.c index dae687cb59c..29c880da3b0 100644 --- a/src/process.c +++ b/src/process.c @@ -4354,8 +4354,6 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, while (1) { - int timeout_reduced_for_timers = 0; - /* If calling from keyboard input, do not quit since we want to return C-g as an input character. Otherwise, do pending quit if requested. */ @@ -4435,10 +4433,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, if (EMACS_TIME_VALID_P (timer_delay)) { if (EMACS_TIME_LT (timer_delay, timeout)) - { - timeout = timer_delay; - timeout_reduced_for_timers = 1; - } + timeout = timer_delay; } else { @@ -4697,11 +4692,11 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); - /* The following optimization fails if SIGIO is received between - set_waiting_for_input and select (Bug#11536). - if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) - break; - */ + /* We used to break here if nfds == 0, i.e. we seemed to have + waited the full period. But apparently if Emacs receives + SIGIO between set_waiting_for_input and select, select can + return with nfds == 0 due to the timeout being zeroed out by + the signal handler (Bug#11536). */ if (nfds < 0) {