Inherit query-on-exit flag to stderr process (Bug#30031)

* src/process.c (Fmake_process): Have the pipe process honor the
parent's query-on-exit flag.

* test/src/process-tests.el (make-process/noquery-stderr): New test.
This commit is contained in:
Philipp Stephani 2018-01-08 21:51:44 +01:00
parent 3efb1e7def
commit 9c2b11484f
2 changed files with 25 additions and 2 deletions

View file

@ -1686,6 +1686,8 @@ usage: (make-process &rest ARGS) */)
if (!NILP (program))
CHECK_STRING (program);
bool query_on_exit = NILP (Fplist_get (contact, QCnoquery));
stderrproc = Qnil;
xstderr = Fplist_get (contact, QCstderr);
if (PROCESSP (xstderr))
@ -1701,7 +1703,9 @@ usage: (make-process &rest ARGS) */)
QCname,
concat2 (name, build_string (" stderr")),
QCbuffer,
Fget_buffer_create (xstderr));
Fget_buffer_create (xstderr),
QCnoquery,
query_on_exit ? Qnil : Qt);
}
proc = make_process (name);
@ -1715,7 +1719,7 @@ usage: (make-process &rest ARGS) */)
pset_filter (XPROCESS (proc), Fplist_get (contact, QCfilter));
pset_command (XPROCESS (proc), Fcopy_sequence (command));
if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
if (!query_on_exit)
XPROCESS (proc)->kill_without_query = 1;
if (tem = Fplist_get (contact, QCstop), !NILP (tem))
pset_command (XPROCESS (proc), Qt);

View file

@ -162,5 +162,24 @@
(error nil))))
(should (equal path samepath))))
(ert-deftest make-process/noquery-stderr ()
"Checks that Bug#30031 is fixed."
(skip-unless (executable-find "sleep"))
(with-temp-buffer
(let* ((previous-processes (process-list))
(process (make-process :name "sleep"
:command '("sleep" "1h")
:noquery t
:connection-type 'pipe
:stderr (current-buffer))))
(unwind-protect
(let ((new-processes (cl-set-difference (process-list)
previous-processes
:test #'eq)))
(should new-processes)
(dolist (process new-processes)
(should-not (process-query-on-exit-flag process))))
(kill-process process)))))
(provide 'process-tests)
;; process-tests.el ends here.