summaryrefslogtreecommitdiff
path: root/lisp/erc/erc-ibuffer.el
diff options
context:
space:
mode:
authorOlivier Certner <ocert.dev@free.fr>2020-10-23 14:39:04 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2020-10-23 14:54:31 +0200
commit944c4708358e0121a1a62b629959032e399f3187 (patch)
treee47bb4c215ad5c4c8f5e87f75601b3451932bbee /lisp/erc/erc-ibuffer.el
parentead957a2c3281002d5675f0f6efdc28ea223ea6f (diff)
downloademacs-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.el12
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)