From: Chong Yidong Date: Mon, 5 Nov 2012 04:00:58 +0000 (+0800) Subject: * process.c (wait_reading_process_output): Revert previous change. X-Git-Tag: emacs-24.3.90~173^2~9^2~157 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=209c6a58b92363aaa4de1238b73261694bba9d1f;p=emacs.git * process.c (wait_reading_process_output): Revert previous change. --- diff --git a/src/ChangeLog b/src/ChangeLog index 6c515271594..d0f42dd2394 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-11-05 Chong Yidong + + * process.c (wait_reading_process_output): Revert previous change. + 2012-11-05 Paul Eggert Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). diff --git a/src/process.c b/src/process.c index 16600f94ce4..43f0239d301 100644 --- a/src/process.c +++ b/src/process.c @@ -4336,6 +4336,8 @@ 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. */ @@ -4415,7 +4417,10 @@ 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 = timer_delay; + timeout_reduced_for_timers = 1; + } } else { @@ -4674,12 +4679,9 @@ 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); - /* 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 ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) + /* We waited the full specified time, so return now. */ + break; if (nfds < 0) { if (xerrno == EINTR)