emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 977630b528: * lisp/subr.el (combine-change-calls-1): Fix bug#6046


From: Stefan Monnier
Subject: master 977630b528: * lisp/subr.el (combine-change-calls-1): Fix bug#60467
Date: Fri, 13 Jan 2023 17:41:44 -0500 (EST)

branch: master
commit 977630b5285809a57e50ff5f38d9c34247b549a7
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * lisp/subr.el (combine-change-calls-1): Fix bug#60467
    
    Don't stop at timestamps.
    Also Don't burp about breakage just because (cdr old-bul) is nil.
---
 lisp/subr.el | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index d1d3c76caf..9e50b1e7f9 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -4966,21 +4966,20 @@ the function `undo--wrap-and-run-primitive-undo'."
                       beg
                       (marker-position end-marker)
                       #'undo--wrap-and-run-primitive-undo
-                      beg (marker-position end-marker) buffer-undo-list))
+                      beg (marker-position end-marker)
+                      ;; We will truncate this list by side-effect below.
+                      buffer-undo-list))
                (ptr buffer-undo-list))
            (if (not (eq buffer-undo-list old-bul))
                (progn
                  (while (and (not (eq (cdr ptr) old-bul))
                              ;; In case garbage collection has removed OLD-BUL.
-                             (cdr ptr)
-                             ;; Don't include a timestamp entry.
-                             (not (and (consp (cdr ptr))
-                                       (consp (cadr ptr))
-                                       (eq (caadr ptr) t)
-                                       (setq old-bul (cdr ptr)))))
+                             (or (cdr ptr)
+                                 (progn
+                                   (message "combine-change-calls: 
buffer-undo-list broken")
+                                   nil)))
                    (setq ptr (cdr ptr)))
-                 (unless (cdr ptr)
-                   (message "combine-change-calls: buffer-undo-list broken"))
+                 ;; Truncate the list that's in the `apply' entry.
                  (setcdr ptr nil)
                  (push ap-elt buffer-undo-list)
                  (setcdr buffer-undo-list old-bul)))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]