]> git.eshelyaron.com Git - emacs.git/commitdiff
(ewoc-delete): Compute last node once before looping.
authorThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 27 May 2006 09:37:13 +0000 (09:37 +0000)
committerThien-Thi Nguyen <ttn@gnuvola.org>
Sat, 27 May 2006 09:37:13 +0000 (09:37 +0000)
lisp/ChangeLog
lisp/emacs-lisp/ewoc.el

index 888d793e621317b52aa7856271835b8f9ca4b686..b8720226e8da19340716d9362c4c731159363ded 100644 (file)
@@ -3,6 +3,8 @@
        * emacs-lisp/ewoc.el (ewoc--create): No longer
        take HEADER and FOOTER args.  Update unique caller.
 
+       (ewoc-delete): Compute last node once before looping.
+
 2006-05-27  Mathias Dahl  <mathias.dahl@gmail.com>
 
        * dired.el (dired-mode-map): Change `tumme-tag-remove' to
index d1ededc583de99f5c779487fd8fb128bacf3fe4a..a02425b0cec077f5c5f116e5c704ad365ae6c023 100644 (file)
@@ -385,12 +385,12 @@ arguments will be passed to MAP-FUNCTION."
 (defun ewoc-delete (ewoc &rest nodes)
   "Delete NODES from EWOC."
   (ewoc--set-buffer-bind-dll-let* ewoc
-      ((L nil) (R nil))
+      ((L nil) (R nil) (last (ewoc--last-node ewoc)))
     (dolist (node nodes)
       ;; If we are about to delete the node pointed at by last-node,
       ;; set last-node to nil.
-      (if (eq (ewoc--last-node ewoc) node)
-          (setf (ewoc--last-node ewoc) nil))
+      (when (eq last node)
+        (setf last nil (ewoc--last-node ewoc) nil))
       (delete-region (ewoc--node-start-marker node)
                      (ewoc--node-start-marker (ewoc--node-next node)))
       (set-marker (ewoc--node-start-marker node) nil)