(gnus-summary-insert-old-articles): No longer passes compressed range to gnus-summary...
authorKevin Greiner <kevin.greiner@compsol.cc>
Wed, 27 Nov 2002 18:59:46 +0000 (18:59 +0000)
committerKevin Greiner <kevin.greiner@compsol.cc>
Wed, 27 Nov 2002 18:59:46 +0000 (18:59 +0000)
lisp/gnus-sum.el

index 72729d4..953bcb0 100644 (file)
@@ -11193,32 +11193,32 @@ If ALL is a number, fetch this number of articles."
       (let ((old (sort (mapcar 'car gnus-newsgroup-data) '<))
            older len)
        (setq older
-;;; Some nntp servers lie about their active range.  When this happens, the active range can be in the millions.  
-;;;          (gnus-sorted-difference
-;;;           (gnus-uncompress-range (list gnus-newsgroup-active))
-;;;           old)
+             ;; Some nntp servers lie about their active range.  When this happens, the active
+             ;; range can be in the millions.
+             ;; Use a compressed range to avoid creating a huge list.
              (gnus-range-difference (list gnus-newsgroup-active) old))
        (setq len (gnus-range-length older))
        (cond
         ((null older) nil)
         ((numberp all)
          (if (< all len)
-              (let ((older-range (nreverse older)))
-                (setq older nil)
-
-                (while (> all 0)
-                  (let* ((r (pop older-range))
-                         (min (if (numberp r) r (car r)))
-                         (max (if (numberp r) r (cdr r))))
-                    (while (and (<= min max)
-                                (> all 0))
-                      (push max older)
-                      (setq all (1- all)
-                            max (1- max))))))
-            (setq older (gnus-uncompress-range older))))
-        (all nil)
+             (let ((older-range (nreverse older)))
+               (setq older nil)
+
+               (while (> all 0)
+                 (let* ((r (pop older-range))
+                        (min (if (numberp r) r (car r)))
+                        (max (if (numberp r) r (cdr r))))
+                   (while (and (<= min max)
+                               (> all 0))
+                     (push max older)
+                     (setq all (1- all)
+                           max (1- max))))))
+           (setq older (gnus-uncompress-range older))))
+        (all
+         (setq older (gnus-uncompress-range older)))
         (t
-         (if (and (numberp gnus-large-newsgroup)
+         (when (and (numberp gnus-large-newsgroup)
                   (> len gnus-large-newsgroup))
              (let* ((cursor-in-echo-area nil)
                     (initial (gnus-parameter-large-newsgroup-initial
@@ -11237,19 +11237,19 @@ If ALL is a number, fetch this number of articles."
                (unless (string-match "^[ \t]*$" input)
                  (setq all (string-to-number input))
                  (if (< all len)
-                      (let ((older-range (nreverse older)))
-                        (setq older nil)
-
-                        (while (> all 0)
-                          (let* ((r (pop older-range))
-                                 (min (if (numberp r) r (car r)))
-                                 (max (if (numberp r) r (cdr r))))
-                            (while (and (<= min max)
-                                        (> all 0))
-                              (push max older)
-                              (setq all (1- all)
-                                    max (1- max))))))
-                    (setq older (gnus-uncompress-range older))))))))
+                     (let ((older-range (nreverse older)))
+                       (setq older nil)
+
+                       (while (> all 0)
+                         (let* ((r (pop older-range))
+                                (min (if (numberp r) r (car r)))
+                                (max (if (numberp r) r (cdr r))))
+                           (while (and (<= min max)
+                                       (> all 0))
+                             (push max older)
+                             (setq all (1- all)
+                                   max (1- max))))))))))
+         (setq older (gnus-uncompress-range older))))
        (if (not older)
            (message "No old news.")
          (gnus-summary-insert-articles older)