diff options
author | Lars Magne Ingebrigtsen <[email protected]> | 2010-09-05 00:56:31 +0000 |
---|---|---|
committer | Katsumi Yamaoka <[email protected]> | 2010-09-05 00:56:31 +0000 |
commit | fb994703be0711372966a1a5251b9b345d18f297 (patch) | |
tree | bc06c8c4f543145b53a242217a2c24c24d368f84 | |
parent | ef45ee6fc8066898f1edc637b2fd3b5474b0fb9e (diff) |
gnus-start.el (gnus-make-hashtable-from-newsrc-alist): Remove duplicates from .newsrc list.
-rw-r--r-- | lisp/gnus/ChangeLog | 2 | ||||
-rw-r--r-- | lisp/gnus/gnus-start.el | 20 |
2 files changed, 14 insertions, 8 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 5f692d626c..9ed24b72a5 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -2,6 +2,8 @@ * gnus-start.el (gnus-get-unread-articles): Protect against groups that come from no known methods. + (gnus-make-hashtable-from-newsrc-alist): Remove duplicates from .newsrc + list. * pop3.el (pop3-display-message-size-flag): Removed -- everybody wants message sizes. diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index c7d85524ef..0e35a12cf7 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el @@ -1815,14 +1815,18 @@ If SCAN, request a scan of that group as well." (if (setq rest (member method methods)) (gnus-info-set-method info (car rest)) (push method methods))) - (gnus-sethash - (car info) - ;; Preserve number of unread articles in groups. - (cons (and ohashtb (car (gnus-gethash (car info) ohashtb))) - prev) - gnus-newsrc-hashtb) - (setq prev alist - alist (cdr alist))) + ;; Check for duplicates. + (if (gnus-gethash (car info) gnus-newsrc-hashtb) + ;; Remove this entry from the alist. + (setcdr prev (cddr prev)) + (gnus-sethash + (car info) + ;; Preserve number of unread articles in groups. + (cons (and ohashtb (car (gnus-gethash (car info) ohashtb))) + prev) + gnus-newsrc-hashtb) + (setq prev alist)) + (setq alist (cdr alist))) ;; Make the same select-methods in `gnus-server-alist' identical ;; as well. (while methods |