aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <[email protected]>2010-09-05 00:56:31 +0000
committerKatsumi Yamaoka <[email protected]>2010-09-05 00:56:31 +0000
commitfb994703be0711372966a1a5251b9b345d18f297 (patch)
treebc06c8c4f543145b53a242217a2c24c24d368f84
parentef45ee6fc8066898f1edc637b2fd3b5474b0fb9e (diff)
gnus-start.el (gnus-make-hashtable-from-newsrc-alist): Remove duplicates from .newsrc list.
-rw-r--r--lisp/gnus/ChangeLog2
-rw-r--r--lisp/gnus/gnus-start.el20
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