changeset 70992:dcab6d42213c

(ewoc-delete): Compute last node once before looping.
author Thien-Thi Nguyen <ttn@gnuvola.org>
date Sat, 27 May 2006 09:36:11 +0000
parents 989ad5a031e2
children 320310f2740c
files lisp/emacs-lisp/ewoc.el
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/ewoc.el	Sat May 27 08:56:11 2006 +0000
+++ b/lisp/emacs-lisp/ewoc.el	Sat May 27 09:36:11 2006 +0000
@@ -385,12 +385,12 @@
 (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)