diff options
| author | Stefan Monnier | 2012-03-27 16:43:09 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-03-27 16:43:09 -0400 |
| commit | b973155e956eec4de5128effca7cc749897c1a45 (patch) | |
| tree | d32509bfce107caeb7f09ad906348cd746c71225 | |
| parent | 5d956bc22e57b78f47312001272f2e6643f31334 (diff) | |
| download | emacs-b973155e956eec4de5128effca7cc749897c1a45.tar.gz emacs-b973155e956eec4de5128effca7cc749897c1a45.zip | |
* 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
| -rw-r--r-- | lisp/ChangeLog | 13 | ||||
| -rw-r--r-- | 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 @@ | |||
| 1 | 2012-03-27 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * emacs-lisp/avl-tree.el (avl-tree--enter-balance): Fix paren typo | ||
| 4 | (bug#11077). | ||
| 5 | (avl-tree--check, avl-tree--check-node): New funs. | ||
| 6 | |||
| 1 | 2012-03-27 Martin Rudalics <rudalics@gmx.at> | 7 | 2012-03-27 Martin Rudalics <rudalics@gmx.at> |
| 2 | 8 | ||
| 3 | * window.el (switch-to-visible-buffer): New option. | 9 | * window.el (switch-to-visible-buffer): New option. |
| 4 | (switch-to-prev-buffer, switch-to-next-buffer): Observe | 10 | (switch-to-prev-buffer, switch-to-next-buffer): |
| 5 | switch-to-visible-buffer. Make sure that checking for a window | 11 | Observe switch-to-visible-buffer. Make sure that checking for a window |
| 6 | showing a buffer already is done on the same frame. | 12 | showing a buffer already is done on the same frame. |
| 7 | 13 | ||
| 8 | 2012-03-27 Glenn Morris <rgm@gnu.org> | 14 | 2012-03-27 Glenn Morris <rgm@gnu.org> |
| @@ -28,8 +34,7 @@ | |||
| 28 | 2012-03-25 Eli Zaretskii <eliz@gnu.org> | 34 | 2012-03-25 Eli Zaretskii <eliz@gnu.org> |
| 29 | 35 | ||
| 30 | * makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead | 36 | * makefile.w32-in (install): Use $(DIRNAME)_same-dir.tst instead |
| 31 | of same-dir.tst, to avoid stepping on other (parallel) Make job's | 37 | of same-dir.tst, to avoid stepping on other (parallel) Make job's toes. |
| 32 | toes. | ||
| 33 | 38 | ||
| 34 | 2012-03-25 Chong Yidong <cyd@gnu.org> | 39 | 2012-03-25 Chong Yidong <cyd@gnu.org> |
| 35 | 40 | ||
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." | |||
| 295 | (if (> (* sgn b2) 0) (- sgn) 0) | 295 | (if (> (* sgn b2) 0) (- sgn) 0) |
| 296 | (avl-tree--node-balance p1) | 296 | (avl-tree--node-balance p1) |
| 297 | (if (< (* sgn b2) 0) sgn 0) | 297 | (if (< (* sgn b2) 0) sgn 0) |
| 298 | (avl-tree--node-branch node branch) p2 | 298 | (avl-tree--node-branch node branch) p2)) |
| 299 | (avl-tree--node-balance | 299 | (setf (avl-tree--node-balance |
| 300 | (avl-tree--node-branch node branch)) 0)) | 300 | (avl-tree--node-branch node branch)) 0) |
| 301 | nil)))) | 301 | nil)))) |
| 302 | 302 | ||
| 303 | (defun avl-tree--do-enter (cmpfun root branch data &optional updatefun) | 303 | (defun avl-tree--do-enter (cmpfun root branch data &optional updatefun) |
| @@ -339,6 +339,16 @@ inserted data." | |||
| 339 | (cons nil newdata)) ; return value | 339 | (cons nil newdata)) ; return value |
| 340 | )))) | 340 | )))) |
| 341 | 341 | ||
| 342 | (defun avl-tree--check (tree) | ||
| 343 | "Check the tree's balance." | ||
| 344 | (avl-tree--check-node (avl-tree--root tree))) | ||
| 345 | (defun avl-tree--check-node (node) | ||
| 346 | (if (null node) 0 | ||
| 347 | (let ((dl (avl-tree--check-node (avl-tree--node-left node))) | ||
| 348 | (dr (avl-tree--check-node (avl-tree--node-right node)))) | ||
| 349 | (assert (= (- dr dl) (avl-tree--node-balance node))) | ||
| 350 | (1+ (max dl dr))))) | ||
| 351 | |||
| 342 | ;; ---------------------------------------------------------------- | 352 | ;; ---------------------------------------------------------------- |
| 343 | 353 | ||
| 344 | 354 | ||