From 95d2250bcf762296ec88e78d88f0c3b310b119ae Mon Sep 17 00:00:00 2001 From: Andreas Politz Date: Sat, 3 Aug 2019 16:33:06 +0200 Subject: [PATCH] Tweak tq queue processing * lisp/emacs-lisp/tq.el (tq-process-buffer): Pop the queue before calling the function because the function may add new entries to the queue (bug#19016). Also report errors. --- lisp/emacs-lisp/tq.el | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lisp/emacs-lisp/tq.el b/lisp/emacs-lisp/tq.el index 4249305feee..a8c7e892893 100644 --- a/lisp/emacs-lisp/tq.el +++ b/lisp/emacs-lisp/tq.el @@ -153,15 +153,18 @@ This produces more reliable results with some processes." (buffer-name buf))) (goto-char (point-min)) (if (re-search-forward (tq-queue-head-regexp tq) nil t) - (let ((answer (buffer-substring (point-min) (point)))) + (let ((answer (buffer-substring (point-min) (point))) + (fn (tq-queue-head-fn tq)) + (closure (tq-queue-head-closure tq))) (delete-region (point-min) (point)) - (unwind-protect - (condition-case nil - (funcall (tq-queue-head-fn tq) - (tq-queue-head-closure tq) - answer) - (error nil)) - (tq-queue-pop tq)) + ;; Pop the queue before calling the function because + ;; the function may add new functions to the head of + ;; the queue. + (tq-queue-pop tq) + (condition-case err + (funcall fn closure answer) + (error (message "Error while processing tq callback: %s" + (error-message-string err)))) (tq-process-buffer tq)))))))) (provide 'tq) -- 2.39.2