branch: elpa-admin
commit b3591656cf08044d9b7c7d8eef34de24231c5c2d
Author: Stefan Monnier <monn...@iro.umontreal.ca>
Commit: Stefan Monnier <monn...@iro.umontreal.ca>

    * elpa-admin.el (elpaa--keep-old): Avoid inf-loop
---
 elpa-admin.el | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/elpa-admin.el b/elpa-admin.el
index fff9fd9f7f..21f0a649f3 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -492,20 +492,21 @@ returns.  Return the selected revision."
             (let* ((bucket (car buckets))
                    (len (length (try-completion "" bucket)))
                    (newbuckets ()))
-              (dolist (oldtarball (cdr bucket))
-                (let ((tvers (car oldtarball)))
-                  (push oldtarball
-                        (alist-get (substring tvers 0
-                                              (min (length tvers) (1+ len)))
-                                   newbuckets nil nil #'equal))))
-              (when (< (+ (length newbuckets) (length (cdr buckets)))
-                       (- n (length kept)))
-                ;; (message "Spreading one bucket")
-                (setq buckets (nconc (cdr buckets)
-                                     (mapcar (lambda (b)
-                                               (cons (length (car b)) (cdr b)))
-                                             newbuckets)))
-                t)))
+              (when (cddr bucket) ;There's more than 1 entry in this bucket.
+                (dolist (oldtarball (cdr bucket))
+                  (let ((tvers (car oldtarball)))
+                    (push oldtarball
+                          (alist-get (substring tvers 0
+                                                (min (length tvers) (1+ len)))
+                                     newbuckets nil nil #'equal))))
+                (when (< (+ (length newbuckets) (length (cdr buckets)))
+                         (- n (length kept)))
+                  ;; (message "Spreading one bucket into: %S" newbuckets)
+                  (setq buckets (nconc (cdr buckets)
+                                       (mapcar (lambda (b)
+                                                 (cons (length (car b)) (cdr 
b)))
+                                               newbuckets)))
+                  t))))
         ;; Finally, evenly select elements from every bucket.
         (setq buckets (sort buckets (lambda (b1 b2) (<= (length b1) (length 
b2)))))
         (while buckets

Reply via email to