]> git.eshelyaron.com Git - emacs.git/commitdiff
Inherit query-on-exit flag to stderr process (Bug#30031)
authorPhilipp Stephani <phst@google.com>
Mon, 8 Jan 2018 20:51:44 +0000 (21:51 +0100)
committerPhilipp Stephani <phst@google.com>
Wed, 10 Jan 2018 14:43:52 +0000 (15:43 +0100)
* 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.

src/process.c
test/src/process-tests.el

index 94d9f8c6a5cca202bd09fb14e90febd0e88b52cb..36fb8a70cf1da09cf0438bd6b51424c1798cb9cb 100644 (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);
index 34309a5817dab4de32943be2cdcf9aa14b3253d0..7d355602297c7fe1380012c25e2dbbecb86952c0 100644 (file)
                               (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.