Fix `uniquify-managed' unbounded growth

* lisp/uniquify.el (uniquify-rationalize-file-buffer-names):
Protect against exponential `uniquify-managed' growth when
reverting several (more than two) buffers that have the same file
name (bug#36877).
This commit is contained in:
Lars Ingebrigtsen 2021-05-12 17:36:24 +02:00
parent bc1a01172e
commit 417d53db2b

View file

@ -246,7 +246,14 @@ this rationalization."
(if (buffer-live-p (uniquify-item-buffer item))
item))
items)))
(setq fix-list (append fix-list items))))
;; Other buffer's `uniquify-managed' lists may share
;; elements. Ensure that we don't add these elements more
;; than once to this buffer's `uniquify-managed' list.
(let ((new-items nil))
(dolist (item items)
(unless (memq item fix-list)
(push item new-items)))
(setq fix-list (append fix-list new-items)))))
;; selects buffers whose names may need changing, and others that
;; may conflict, then bring conflicting names together
(uniquify-rationalize fix-list))))