diff options
author | Olivier Certner <ocert.dev@free.fr> | 2020-10-23 14:39:04 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2020-10-23 14:54:31 +0200 |
commit | 944c4708358e0121a1a62b629959032e399f3187 (patch) | |
tree | e47bb4c215ad5c4c8f5e87f75601b3451932bbee /lisp/erc/erc-ibuffer.el | |
parent | ead957a2c3281002d5675f0f6efdc28ea223ea6f (diff) | |
download | emacs-944c4708358e0121a1a62b629959032e399f3187.tar.gz emacs-944c4708358e0121a1a62b629959032e399f3187.tar.bz2 emacs-944c4708358e0121a1a62b629959032e399f3187.zip |
ERC: Fix ERC's IBuffer format "crash" on killed server buffer
* 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
Diffstat (limited to 'lisp/erc/erc-ibuffer.el')
-rw-r--r-- | lisp/erc/erc-ibuffer.el | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el index 7aee7705fff..556a25e3e7b 100644 --- a/lisp/erc/erc-ibuffer.el +++ b/lisp/erc/erc-ibuffer.el @@ -92,10 +92,14 @@ " ")) (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) |