Remove duplicates from .newsrc list.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sat, 4 Sep 2010 20:18:56 +0000 (22:18 +0200)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Sat, 4 Sep 2010 20:18:56 +0000 (22:18 +0200)
lisp/ChangeLog
lisp/gnus-start.el

index 76d2f36..df65c67 100644 (file)
@@ -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.
index c7d8552..0e35a12 100644 (file)
@@ -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