* simple.el (undo): Prevent insertion of identity mapping into

undo-equiv-table so as undo-only does not inf loop in the presence
of consecutive nils in undo list.

Fixes: debbugs:17236
This commit is contained in:
Barry O'Reilly 2014-04-12 15:20:44 -04:00
parent 5121b6923b
commit 175a3a5144
2 changed files with 12 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2014-04-12 Barry O'Reilly <gundaetiapo@gmail.com>
* simple.el (undo): Prevent insertion of identity mapping into
undo-equiv-table so as undo-only does not inf loop in the presence
of consecutive nils in undo list.
2014-04-12 Matthias Dahl <matthias.dahl@binary-island.eu>
* faces.el (make-face): Deprecate optional argument as it is no

View file

@ -2143,7 +2143,12 @@ as an argument limits undo to changes within the current region."
;; above when checking.
(while (eq (car list) nil)
(setq list (cdr list)))
(puthash list (if undo-in-region t pending-undo-list)
(puthash list
;; Prevent identity mapping. This can happen if
;; consecutive nils are erroneously in undo list.
(if (or undo-in-region (eq list pending-undo-list))
t
pending-undo-list)
undo-equiv-table))
;; Don't specify a position in the undo record for the undo command.
;; Instead, undoing this should move point to where the change is.