]> git.eshelyaron.com Git - emacs.git/commitdiff
ERC: Fix ERC's IBuffer format "crash" on killed server buffer
authorOlivier Certner <ocert.dev@free.fr>
Fri, 23 Oct 2020 12:39:04 +0000 (14:39 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 23 Oct 2020 12:54:31 +0000 (14:54 +0200)
* lisp/erc/erc-ibuffer.el (erc-server-name): Fix a crash when
displaying (or updating) an IBuffer buffer using ERC's first IBuffer
format.  This happens when one ERC buffer has its associated server
buffer killed, e.g., voluntarily or automatically after server
disconnection when `erc-kill-server-buffer-on-quit' is set to t.  The
culprit is the "Server" column, which returns nil in this case.
Display "(closed)" instead (bug#44156).
Copyright-paperwork-exempt: yes

lisp/erc/erc-ibuffer.el

index 7aee7705fffc270790810011b6320db2c624f928..556a25e3e7b36b8b9cc945ed551d979ba045a866 100644 (file)
     " "))
 
 (define-ibuffer-column erc-server-name (:name "Server")
-  (if (and erc-server-process (processp erc-server-process))
-      (with-current-buffer (process-buffer erc-server-process)
-       (or erc-server-announced-name erc-session-server))
-    ""))
+  (or
+   (when (and erc-server-process (processp erc-server-process))
+     (let ((buffer (process-buffer erc-server-process)))
+       (if (buffer-live-p buffer)
+         (with-current-buffer buffer
+           (or erc-server-announced-name erc-session-server))
+         "(closed)")))
+   ""))
 
 (define-ibuffer-column erc-target (:name "Target")
   (if (eq major-mode 'erc-mode)