diff --git a/reactos/lib/rtl/splaytree.c b/reactos/lib/rtl/splaytree.c index dfb77b60848..6dc13aaeea8 100644 --- a/reactos/lib/rtl/splaytree.c +++ b/reactos/lib/rtl/splaytree.c @@ -22,17 +22,25 @@ VOID FixupChildLinks(PRTL_SPLAY_LINKS Links, BOOLEAN Root, BOOLEAN LeftChild) { if (RtlLeftChild(Links)) + { RtlInsertAsLeftChild(Links, RtlLeftChild(Links)); + } if (RtlRightChild(Links)) + { RtlInsertAsRightChild(Links, RtlRightChild(Links)); + } if (!Root) { if (LeftChild) + { RtlInsertAsLeftChild(RtlParent(Links), Links); + } else + { RtlInsertAsRightChild(RtlParent(Links), Links); + } } } @@ -86,15 +94,23 @@ SwapSplayLinks(PRTL_SPLAY_LINKS LinkA, if (!RootA) { if (LeftA) + { RtlInsertAsLeftChild(RtlParent(&Ta), LinkB); + } else + { RtlInsertAsRightChild(RtlParent(&Ta), LinkB); + } } if (LeftB) + { RtlInsertAsLeftChild(LinkB, LinkA); + } else + { RtlInsertAsRightChild(LinkB, LinkA); + } } FixupChildLinks(LinkA, FALSE, LeftB);