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