From b973155e956eec4de5128effca7cc749897c1a45 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 27 Mar 2012 16:43:09 -0400 Subject: [PATCH] * lisp/emacs-lisp/avl-tree.el (avl-tree--enter-balance): Fix paren typo. (avl-tree--check, avl-tree--check-node): New funs. Fixes: debbugs:11077 --- lisp/ChangeLog | 13 +++++++++---- lisp/emacs-lisp/avl-tree.el | 16 +++++++++++++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7d81bbb46b5..65018db7e4d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,8 +1,14 @@ +2012-03-27 Stefan Monnier + + * emacs-lisp/avl-tree.el (avl-tree--enter-balance): Fix paren typo + (bug#11077). + (avl-tree--check, avl-tree--check-node): New funs. + 2012-03-27 Martin Rudalics * window.el (switch-to-visible-buffer): New option. - (switch-to-prev-buffer, switch-to-next-buffer): Observe - switch-to-visible-buffer. Make sure that checking for a window + (switch-to-prev-buffer, switch-to-next-buffer): + Observe switch-to-visible-buffer. Make sure that checking for a window showing a buffer already is done on the same frame. 2012-03-27 Glenn Morris @@ -28,8 +34,7 @@ 2012-03-25 Eli Zaretskii * makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead - of same-dir.tst, to avoid stepping on other (parallel) Make job's - toes. + of same-dir.tst, to avoid stepping on other (parallel) Make job's toes. 2012-03-25 Chong Yidong diff --git a/lisp/emacs-lisp/avl-tree.el b/lisp/emacs-lisp/avl-tree.el index cb5ea048999..9f348767478 100644 --- a/lisp/emacs-lisp/avl-tree.el +++ b/lisp/emacs-lisp/avl-tree.el @@ -295,9 +295,9 @@ Return t if the height of the tree has grown." (if (> (* sgn b2) 0) (- sgn) 0) (avl-tree--node-balance p1) (if (< (* sgn b2) 0) sgn 0) - (avl-tree--node-branch node branch) p2 - (avl-tree--node-balance - (avl-tree--node-branch node branch)) 0)) + (avl-tree--node-branch node branch) p2)) + (setf (avl-tree--node-balance + (avl-tree--node-branch node branch)) 0) nil)))) (defun avl-tree--do-enter (cmpfun root branch data &optional updatefun) @@ -339,6 +339,16 @@ inserted data." (cons nil newdata)) ; return value )))) +(defun avl-tree--check (tree) + "Check the tree's balance." + (avl-tree--check-node (avl-tree--root tree))) +(defun avl-tree--check-node (node) + (if (null node) 0 + (let ((dl (avl-tree--check-node (avl-tree--node-left node))) + (dr (avl-tree--check-node (avl-tree--node-right node)))) + (assert (= (- dr dl) (avl-tree--node-balance node))) + (1+ (max dl dr))))) + ;; ---------------------------------------------------------------- -- 2.39.5