branch: externals/trie commit 5a064c0b491d68704835c5af2720fe69c0465446 Author: Toby S. Cubitt <toby-predict...@dr-qubit.org> Commit: Toby S. Cubitt <toby-predict...@dr-qubit.org>
Fix bug in trie-delete return value. --- trie.el | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/trie.el b/trie.el index 6d4befc..52fa741 100644 --- a/trie.el +++ b/trie.el @@ -749,7 +749,7 @@ bind any variables with names commencing \"--\"." ;; bugs caused by a supplied function binding a variable with the same name as ;; one of the arguments, which would cause a nasty bug when the lambda's ;; (below) are called. -'; FIXME: not needed with lexical binding +;; FIXME: not needed with lexical binding (defun trie--do-delete (node --trie--do-delete--seq --trie--do-delete--test --trie--do-delete--deletefun @@ -772,22 +772,25 @@ bind any variables with names commencing \"--\"." (when --trie--do-delete--test (lambda (n) (funcall --trie--do-delete--test - --trie-delete--key (trie--node-data n))))) + --trie--do-delete--key (trie--node-data n))))) ;; otherwise, delete on down (return value of trie's deletion function is ;; the deleted data, which is always non-nil for a trie) - (funcall --trie--do-delete--deletefun - (trie--node-subtree node) - (trie--node-create-dummy (elt --trie--do-delete--seq 0)) - (lambda (n) - (and (trie--do-delete - n (trie--subseq --trie--do-delete--seq 1) - --trie--do-delete--test - --trie--do-delete--deletefun - --trie--do-delete--emptyfun - --trie--do-delete--cmpfun - --trie--do-delete--key) - (funcall --trie--do-delete--emptyfun - (trie--node-subtree n))))))) + (let (--trie-deleted--node) + (funcall --trie--do-delete--deletefun + (trie--node-subtree node) + (trie--node-create-dummy (elt --trie--do-delete--seq 0)) + (lambda (n) + (and (setq --trie-deleted--node + (trie--do-delete + n (trie--subseq --trie--do-delete--seq 1) + --trie--do-delete--test + --trie--do-delete--deletefun + --trie--do-delete--emptyfun + --trie--do-delete--cmpfun + --trie--do-delete--key)) + (funcall --trie--do-delete--emptyfun + (trie--node-subtree n))))) + --trie-deleted--node))) (defun trie-delete (trie key &optional test)