From: Nitish Chandra Date: Sat, 17 Jun 2017 00:46:12 +0000 (+0300) Subject: primitive-undo: Update only the currently valid markers X-Git-Tag: emacs-26.0.90~521^2~60 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e17d6e2f6f0b7e33f16884bcb29b4d5f4433941b;p=emacs.git 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 --- diff --git a/lisp/simple.el b/lisp/simple.el index df664fc0503..a5565ab6e73 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -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"