From a81223aeaa0d89954a10d9b5912665aedb0b9c74 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Thu, 19 Sep 2019 10:36:42 -0700 Subject: [PATCH] Only use Gnus registry for formatting when registry is loaded See bug #36903 * lisp/gnus/gnus-registry.el (gnus-registry-article-marks-to-chars): (gnus-registry-article-marks-to-names): In some circumstances it's possible for the user's summary line format spec to include registry-specific code, while the registry itself isn't actually loaded. Make sure the database is actually a hashtable before accessing it. --- lisp/gnus/gnus-registry.el | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index e949179b3cc..ff0d4bad715 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -1007,23 +1007,27 @@ Uses `gnus-registry-marks' to find what shortcuts to install." ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-chars) (defun gnus-registry-article-marks-to-chars (headers) "Show the marks for an article by the :char property." - (let* ((id (mail-header-message-id headers)) - (marks (when id (gnus-registry-get-id-key id 'mark)))) - (concat (delq nil - (mapcar - (lambda (m) - (plist-get - (cdr-safe (assoc m gnus-registry-marks)) - :char)) - marks))))) + (if (hash-table-p gnus-registry-db) + (let* ((id (mail-header-message-id headers)) + (marks (when id (gnus-registry-get-id-key id 'mark)))) + (concat (delq nil + (mapcar + (lambda (m) + (plist-get + (cdr-safe (assoc m gnus-registry-marks)) + :char)) + marks)))) + "")) ;; use like this: ;; (defalias 'gnus-user-format-function-M 'gnus-registry-article-marks-to-names) (defun gnus-registry-article-marks-to-names (headers) "Show the marks for an article by name." - (let* ((id (mail-header-message-id headers)) - (marks (when id (gnus-registry-get-id-key id 'mark)))) - (mapconcat (lambda (mark) (symbol-name mark)) marks ","))) + (if (hash-table-p gnus-registry-db) + (let* ((id (mail-header-message-id headers)) + (marks (when id (gnus-registry-get-id-key id 'mark)))) + (mapconcat (lambda (mark) (symbol-name mark)) marks ",")) + "")) (defun gnus-registry-read-mark () "Read a mark name from the user with completion." -- 2.39.2