Mercurial > emacs
diff lisp/emacs-lisp/ewoc.el @ 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 | c54570f9431a |
children | d3750d5046d7 |
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)