]> git.eshelyaron.com Git - emacs.git/commit
Fix wait_reading_process_output wait_proc hang
authorMatthias Dahl <matthias.dahl@binary-island.eu>
Fri, 16 Feb 2018 15:57:40 +0000 (17:57 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 2 Jun 2018 09:13:12 +0000 (12:13 +0300)
commitde69d28458e52487ebb9db47b100c23a16ab6093
tree9938cebe8d4d215ca8a86570b7f5e2976307f209
parent76f692e82f13dc2d36e3636932f3998023a66289
Fix wait_reading_process_output wait_proc hang

* src/process.c (read_process_output): Track bytes read from
a process.
(wait_reading_process_output): If called recursively through
timers and/or process filters via accept-process-output, it is
possible that the output of wait_proc has already been read by
one of those recursive calls, leaving the original call hanging
forever if no further output arrives through that fd and no
timeout has been set.  Fix that by using the process read
accounting to keep track of how many bytes have been read and
use that as a condition to break out of the infinite loop and
return to the caller as well as to calculate the proper return
value (if a wait_proc is given that is).

* src/process.h (struct Lisp_Process): Add nbytes_read to track
bytes read from a process.

(cherry picked from commit 4ba32858d61eee16f17b51aca01c15211a0912f8)
src/process.c
src/process.h