1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-24 15:53:02 -07:00

Fixing splaytreefind on empty tree. oops.

Regression test: xc/Debug/fbmtest 215526357

Copied from Perforce
 Change: 184434
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Brooksby 2014-02-22 09:08:12 +00:00
parent 50146c866f
commit 262de4e219

View file

@ -457,6 +457,9 @@ Bool SplayTreeFind(Tree *nodeReturn, SplayTree tree, TreeKey key) {
AVERT(SplayTree, tree);
AVER(nodeReturn != NULL);
if (SplayTreeRoot(tree) == TreeEMPTY)
return FALSE;
if (SplaySplay(tree, key, tree->compare) != CompareEQUAL)
return FALSE;
@ -593,18 +596,18 @@ Bool SplayTreeNeighbours(Tree *leftReturn, Tree *rightReturn,
Tree SplayTreeFirst(SplayTree tree, TreeKey zeroKey) {
Tree node;
Compare cmp;
AVERT(SplayTree, tree);
if (SplayTreeRoot(tree) == TreeEMPTY) {
node = TreeEMPTY;
} else {
Compare cmp = SplaySplay(tree, zeroKey, tree->compare);
AVER(cmp != CompareEQUAL);
node = SplayTreeRoot(tree);
AVER(node != TreeEMPTY);
AVER(TreeLeft(node) == TreeEMPTY);
}
if (SplayTreeRoot(tree) == TreeEMPTY)
return TreeEMPTY;
cmp = SplaySplay(tree, zeroKey, tree->compare);
AVER(cmp != CompareEQUAL);
node = SplayTreeRoot(tree);
AVER(node != TreeEMPTY);
AVER(TreeLeft(node) == TreeEMPTY);
return node;
}
@ -613,6 +616,9 @@ Tree SplayTreeNext(SplayTree tree, Tree oldNode, TreeKey oldKey) {
AVERT(SplayTree, tree);
AVERT(Tree, oldNode);
if (SplayTreeRoot(tree) == TreeEMPTY)
return TreeEMPTY;
/* Make old node the root. Probably already is. We don't mind if the
node has been deleted, or replaced by a node with the same key. */
switch (SplaySplay(tree, oldKey, tree->compare)) {