From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/ntdll/ntdll.spec | 2 +- dlls/ntdll/rtl.c | 19 +++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- include/ddk/ntddk.h | 1 + 4 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 97adfeb853a..946be24ee85 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1049,7 +1049,7 @@ @ stdcall RtlSubAuthorityCountSid(ptr) @ stdcall RtlSubAuthoritySid(ptr long) @ stdcall RtlSubtreePredecessor(ptr) -@ stub RtlSubtreeSuccessor +@ stdcall RtlSubtreeSuccessor(ptr) @ stdcall RtlSystemTimeToLocalTime(ptr ptr) @ stdcall RtlTimeFieldsToTime(ptr ptr) @ stdcall RtlTimeToElapsedTimeFields(ptr ptr) diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index d98edb8745e..e277e56be1b 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -255,6 +255,25 @@ RTL_SPLAY_LINKS * WINAPI RtlSubtreePredecessor(RTL_SPLAY_LINKS *links) return child; }
+/****************************************************************************** + * RtlSubtreeSuccessor [NTDLL.@] + */ +RTL_SPLAY_LINKS * WINAPI RtlSubtreeSuccessor(RTL_SPLAY_LINKS *links) +{ + RTL_SPLAY_LINKS *child; + + TRACE("(%p)\n", links); + + child = RtlRightChild(links); + if (!child) + return NULL; + + while (RtlLeftChild(child)) + child = RtlLeftChild(child); + + return child; +} + /****************************************************************************** * RtlInitializeGenericTable [NTDLL.@] */ diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 2a86e4d100b..2ba1dc88eeb 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -1270,7 +1270,7 @@ @ stdcall RtlSubAuthorityCountSid(ptr) @ stdcall RtlSubAuthoritySid(ptr long) @ stdcall RtlSubtreePredecessor(ptr) -@ stub RtlSubtreeSuccessor +@ stdcall RtlSubtreeSuccessor(ptr) @ stdcall RtlSystemTimeToLocalTime(ptr ptr) @ stub RtlTestBit @ stdcall RtlTimeFieldsToTime(ptr ptr) diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h index cc642fa6c0f..334266d6e1d 100644 --- a/include/ddk/ntddk.h +++ b/include/ddk/ntddk.h @@ -314,6 +314,7 @@ ULONG WINAPI RtlNumberGenericTableElements(PRTL_GENERIC_TABLE); ULONG WINAPI RtlNumberGenericTableElementsAvl(PRTL_AVL_TABLE); BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); PRTL_SPLAY_LINKS WINAPI RtlSubtreePredecessor(PRTL_SPLAY_LINKS); +PRTL_SPLAY_LINKS WINAPI RtlSubtreeSuccessor(PRTL_SPLAY_LINKS); NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); char WINAPI RtlUpperChar(char); void WINAPI RtlUpperString(STRING*,const STRING*);