1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-28 07:45:00 +00:00

Fix infinite loop in delete-consecutive-dups

* lisp/subr.el (delete-consecutive-dups): Work even if the last
element is nil (Bug#20588).  Avoid rescan of a circular list in
deletion of last element.
This commit is contained in:
Shigeru Fukaya 2015-07-26 10:43:10 -07:00 committed by Paul Eggert
parent fac8492664
commit 4c55786d9b

View File

@ -440,16 +440,16 @@ one is kept."
First and last elements are considered consecutive if CIRCULAR is
non-nil."
(let ((tail list) last)
(while (consp tail)
(while (cdr tail)
(if (equal (car tail) (cadr tail))
(setcdr tail (cddr tail))
(setq last (car tail)
(setq last tail
tail (cdr tail))))
(if (and circular
(cdr list)
(equal last (car list)))
(nbutlast list)
list)))
last
(equal (car tail) (car list)))
(setcdr last nil)))
list)
(defun number-sequence (from &optional to inc)
"Return a sequence of numbers from FROM to TO (both inclusive) as a list.