- Fix RtlSubtreePredecessor/Successor, someone had implemented them backwards.

svn path=/trunk/; revision=19080
This commit is contained in:
Alex Ionescu 2005-11-09 01:05:00 +00:00
parent b3259fa7d8
commit 767d56a1d3

View file

@ -411,48 +411,43 @@ RtlSplay(PRTL_SPLAY_LINKS Links)
return N;
}
/*
* @implemented
*/
PRTL_SPLAY_LINKS NTAPI
PRTL_SPLAY_LINKS
NTAPI
RtlSubtreePredecessor(IN PRTL_SPLAY_LINKS Links)
{
PRTL_SPLAY_LINKS Child;
Child = Links->RightChild;
if (Child == NULL)
return NULL;
/* Get the left child */
Child = RtlLeftChild(Links);
if (!Child) return NULL;
if (Child->LeftChild == NULL)
return Child;
/* Get left-most child */
while (Child->LeftChild != NULL)
Child = Child->LeftChild;
/* Get right-most child */
while (RtlRightChild(Child)) Child = RtlRightChild(Child);
/* Return it */
return Child;
}
/*
* @implemented
*/
PRTL_SPLAY_LINKS NTAPI
PRTL_SPLAY_LINKS
NTAPI
RtlSubtreeSuccessor(IN PRTL_SPLAY_LINKS Links)
{
PRTL_SPLAY_LINKS Child;
Child = Links->LeftChild;
if (Child == NULL)
return NULL;
/* Get the right child */
Child = RtlRightChild(Links);
if (!Child) return NULL;
if (Child->RightChild == NULL)
return Child;
/* Get right-most child */
while (Child->RightChild != NULL)
Child = Child->RightChild;
/* Get left-most child */
while (RtlLeftChild(Child)) Child = RtlLeftChild(Child);
/* Return it */
return Child;
}