diff --git a/sdk/xtdk/rtlfuncs.h b/sdk/xtdk/rtlfuncs.h index 2dee67c..8a1400f 100644 --- a/sdk/xtdk/rtlfuncs.h +++ b/sdk/xtdk/rtlfuncs.h @@ -221,7 +221,7 @@ RtlMultiplyLargeInteger(IN LARGE_INTEGER Multiplicand, XTCLINK XTCDECL -VOID +BOOLEAN RtlRemoveEntryList(IN PLIST_ENTRY Entry); XTCLINK diff --git a/xtoskrnl/includes/rtl/llist.hh b/xtoskrnl/includes/rtl/llist.hh index dc0e6ab..9db065c 100644 --- a/xtoskrnl/includes/rtl/llist.hh +++ b/xtoskrnl/includes/rtl/llist.hh @@ -26,7 +26,7 @@ namespace RTL IN PLIST_ENTRY Entry); STATIC XTCDECL BOOLEAN ListEmpty(IN PLIST_ENTRY ListHead); STATIC XTCDECL BOOLEAN ListLoop(IN PLIST_ENTRY ListHead); - STATIC XTCDECL VOID RemoveEntryList(IN PLIST_ENTRY Entry); + STATIC XTCDECL BOOLEAN RemoveEntryList(IN PLIST_ENTRY Entry); }; } diff --git a/xtoskrnl/rtl/exports.cc b/xtoskrnl/rtl/exports.cc index f5158fd..bb5faff 100644 --- a/xtoskrnl/rtl/exports.cc +++ b/xtoskrnl/rtl/exports.cc @@ -763,16 +763,16 @@ RtlMultiplyLargeInteger(IN LARGE_INTEGER Multiplicand, * @param Entry * Pointer to the entry that will be removed from the list. * - * @return This routine does not return any value. + * @return This routine returns TRUE if the list is empty after removal, or FALSE otherwise. * * @since XT 1.0 */ XTCLINK XTCDECL -VOID +BOOLEAN RtlRemoveEntryList(IN PLIST_ENTRY Entry) { - RTL::LinkedList::RemoveEntryList(Entry); + return RTL::LinkedList::RemoveEntryList(Entry); } /** diff --git a/xtoskrnl/rtl/llist.cc b/xtoskrnl/rtl/llist.cc index 58bff64..6040718 100644 --- a/xtoskrnl/rtl/llist.cc +++ b/xtoskrnl/rtl/llist.cc @@ -162,14 +162,18 @@ RTL::LinkedList::ListLoop(IN PLIST_ENTRY ListHead) * @param Entry * Pointer to the entry that will be removed from the list. * - * @return This routine does not return any value. + * @return This routine returns TRUE if the list is empty after removal, or FALSE otherwise. * * @since XT 1.0 */ XTCDECL -VOID +BOOLEAN RTL::LinkedList::RemoveEntryList(IN PLIST_ENTRY Entry) { + /* Remove entry from the list */ Entry->Flink->Blink = Entry->Blink; Entry->Blink->Flink = Entry->Flink; + + /* Return TRUE if list is empty, or FALSE otherwise */ + return (BOOLEAN)(Entry->Blink == Entry->Flink); }