primitive-undo: Update only the currently valid markers

* lisp/simple.el (primitive-undo):
Update only the currently valid markers (bug#25599).

Copyright-paperwork-exempt: yes
This commit is contained in:
Nitish Chandra 2017-06-17 03:46:12 +03:00 committed by Dmitry Gutov
parent 3b6e01cccf
commit e17d6e2f6f

View file

@ -2589,8 +2589,12 @@ Return what remains of the list."
(goto-char pos))
;; Adjust the valid marker adjustments
(dolist (adj valid-marker-adjustments)
(set-marker (car adj)
(- (car adj) (cdr adj))))))
;; Insert might have invalidated some of the markers
;; via modification hooks. Update only the currently
;; valid ones (bug#25599).
(if (marker-buffer (car adj))
(set-marker (car adj)
(- (car adj) (cdr adj)))))))
;; (MARKER . OFFSET) means a marker MARKER was adjusted by OFFSET.
(`(,(and marker (pred markerp)) . ,(and offset (pred integerp)))
(warn "Encountered %S entry in undo list with no matching (TEXT . POS) entry"