mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-26 07:11:34 -08:00
Fix open-network-stream responsiveness
Problem reported by Christer Ekholm (Bug#23864). Backport from master. * src/process.c (wait_reading_process_output): Fix typo introduced in 2015-07-06T02:19:13Z!eggert@cs.ucla.edu when wait == INFINITY and got_output_end_time is invalid. In this case the code should break, not continue.
This commit is contained in:
parent
d4c6774f40
commit
a5dcc97bab
1 changed files with 14 additions and 8 deletions
|
|
@ -4911,16 +4911,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 huge_timespec
|
||||
= make_timespec (TYPE_MAXIMUM (time_t), 2 * TIMESPEC_RESOLUTION);
|
||||
struct timespec cmp_time = huge_timespec;
|
||||
if (wait < TIMEOUT)
|
||||
break;
|
||||
struct timespec cmp_time
|
||||
= (wait == TIMEOUT
|
||||
? end_time
|
||||
: (!process_skipped && got_some_output > 0
|
||||
&& (timeout.tv_sec > 0 || timeout.tv_nsec > 0))
|
||||
? got_output_end_time
|
||||
: invalid_timespec ());
|
||||
if (timespec_valid_p (cmp_time))
|
||||
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;
|
||||
if (timespec_cmp (got_output_end_time, cmp_time) < 0)
|
||||
cmp_time = got_output_end_time;
|
||||
}
|
||||
if (timespec_cmp (cmp_time, huge_timespec) < 0)
|
||||
{
|
||||
now = current_timespec ();
|
||||
if (timespec_cmp (cmp_time, now) <= 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue