From: Paul Eggert Date: Sun, 3 Jul 2016 22:46:57 +0000 (+0200) Subject: Re-fix open-network-stream responsiveness X-Git-Tag: emacs-26.0.90~1840^2~125 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=838f122873edbc0cff1ebe3645803e674e812774;p=emacs.git Re-fix open-network-stream responsiveness Problem reported by Christer Ekholm (Bug#23864). * src/process.c (wait_reading_process_output): Further fix for typo introduced in 2015-07-06T02:19:13Z!eggert@cs.ucla.edu when wait == INFINITY and got_output_end_time is invalid. See: http://bugs.gnu.org/23864#20 --- diff --git a/src/process.c b/src/process.c index 376e87230df..bdbdefabb64 100644 --- a/src/process.c +++ b/src/process.c @@ -5269,20 +5269,22 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, haven't lowered our timeout due to timers or SIGIO and have waited a long amount of time due to repeated timers. */ - struct timespec cmp_time; - bool have_cmp_time = false; + struct timespec huge_timespec + = make_timespec (TYPE_MAXIMUM (time_t), 2 * TIMESPEC_RESOLUTION); + struct timespec cmp_time = huge_timespec; if (wait < TIMEOUT) break; - else if (wait == TIMEOUT) - cmp_time = end_time, have_cmp_time = true; - else if (!process_skipped && got_some_output > 0 - && (timeout.tv_sec > 0 || timeout.tv_nsec > 0)) + if (wait == TIMEOUT) + cmp_time = end_time; + if (!process_skipped && got_some_output > 0 + && (timeout.tv_sec > 0 || timeout.tv_nsec > 0)) { if (!timespec_valid_p (got_output_end_time)) break; - cmp_time = got_output_end_time, have_cmp_time = true; + if (timespec_cmp (got_output_end_time, cmp_time) < 0) + cmp_time = got_output_end_time; } - if (have_cmp_time) + if (timespec_cmp (cmp_time, huge_timespec) < 0) { now = current_timespec (); if (timespec_cmp (cmp_time, now) <= 0)