- 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; return N;
} }
/* /*
* @implemented * @implemented
*/ */
PRTL_SPLAY_LINKS NTAPI PRTL_SPLAY_LINKS
RtlSubtreePredecessor (IN PRTL_SPLAY_LINKS Links) NTAPI
RtlSubtreePredecessor(IN PRTL_SPLAY_LINKS Links)
{ {
PRTL_SPLAY_LINKS Child; PRTL_SPLAY_LINKS Child;
Child = Links->RightChild; /* Get the left child */
if (Child == NULL) Child = RtlLeftChild(Links);
return NULL; if (!Child) return NULL;
if (Child->LeftChild == NULL) /* Get right-most child */
return Child; while (RtlRightChild(Child)) Child = RtlRightChild(Child);
/* Get left-most child */
while (Child->LeftChild != NULL)
Child = Child->LeftChild;
/* Return it */
return Child; return Child;
} }
/* /*
* @implemented * @implemented
*/ */
PRTL_SPLAY_LINKS NTAPI PRTL_SPLAY_LINKS
RtlSubtreeSuccessor (IN PRTL_SPLAY_LINKS Links) NTAPI
RtlSubtreeSuccessor(IN PRTL_SPLAY_LINKS Links)
{ {
PRTL_SPLAY_LINKS Child; PRTL_SPLAY_LINKS Child;
Child = Links->LeftChild; /* Get the right child */
if (Child == NULL) Child = RtlRightChild(Links);
return NULL; if (!Child) return NULL;
if (Child->RightChild == NULL) /* Get left-most child */
return Child; while (RtlLeftChild(Child)) Child = RtlLeftChild(Child);
/* Get right-most child */
while (Child->RightChild != NULL)
Child = Child->RightChild;
/* Return it */
return Child; return Child;
} }