]> git.eshelyaron.com Git - emacs.git/commitdiff
primitive-undo: Update only the currently valid markers
authorNitish Chandra <nitishchandrachinta@gmail.com>
Sat, 17 Jun 2017 00:46:12 +0000 (03:46 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Sat, 17 Jun 2017 00:55:36 +0000 (03:55 +0300)
* lisp/simple.el (primitive-undo):
Update only the currently valid markers (bug#25599).

Copyright-paperwork-exempt: yes

lisp/simple.el

index df664fc0503ad2df3e92ad01bfb547f9c5caaa78..a5565ab6e734a4b09159c1cc5fe4837a7514c941 100644 (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"