mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 17:30:32 +00:00
[DDK]
- Add additional list entry checks that can be optionally enabled by defining EXTRA_KERNEL_LIST_ENTRY_CHECKS. These checks warn against attempts to remove items from an empty list, which can easily be an error (and is trivial to avoid where it's not). - Enable these checks by default for ReactOS code CORE-8419 #resolve svn path=/trunk/; revision=66208
This commit is contained in:
parent
5a1de25f17
commit
3df35a13be
2 changed files with 32 additions and 0 deletions
|
@ -9621,6 +9621,10 @@ RtlFailFast(
|
|||
#define NO_KERNEL_LIST_ENTRY_CHECKS
|
||||
#endif
|
||||
|
||||
#if !defined(EXTRA_KERNEL_LIST_ENTRY_CHECKS) && defined(__REACTOS__)
|
||||
#define EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
#endif
|
||||
|
||||
#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
|
||||
|
||||
#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x }
|
||||
|
@ -9693,6 +9697,10 @@ RemoveEntryList(
|
|||
OldFlink = Entry->Flink;
|
||||
OldBlink = Entry->Blink;
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (OldFlink == Entry || OldBlink == Entry)
|
||||
FatalListEntryError(OldBlink, Entry, OldFlink);
|
||||
#endif
|
||||
if (OldFlink->Blink != Entry || OldBlink->Flink != Entry)
|
||||
FatalListEntryError(OldBlink, Entry, OldFlink);
|
||||
#endif
|
||||
|
@ -9711,6 +9719,10 @@ RemoveHeadList(
|
|||
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
|
||||
RtlpCheckListEntry(ListHead);
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
|
||||
FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
|
||||
#endif
|
||||
#endif
|
||||
Entry = ListHead->Flink;
|
||||
Flink = Entry->Flink;
|
||||
|
@ -9733,6 +9745,10 @@ RemoveTailList(
|
|||
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
|
||||
RtlpCheckListEntry(ListHead);
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
|
||||
FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
|
||||
#endif
|
||||
#endif
|
||||
Entry = ListHead->Blink;
|
||||
Blink = Entry->Blink;
|
||||
|
|
|
@ -35,6 +35,10 @@ RtlFailFast(
|
|||
#define NO_KERNEL_LIST_ENTRY_CHECKS
|
||||
#endif
|
||||
|
||||
#if !defined(EXTRA_KERNEL_LIST_ENTRY_CHECKS) && defined(__REACTOS__)
|
||||
#define EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
#endif
|
||||
|
||||
#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
|
||||
|
||||
#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x }
|
||||
|
@ -107,6 +111,10 @@ RemoveEntryList(
|
|||
OldFlink = Entry->Flink;
|
||||
OldBlink = Entry->Blink;
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (OldFlink == Entry || OldBlink == Entry)
|
||||
FatalListEntryError(OldBlink, Entry, OldFlink);
|
||||
#endif
|
||||
if (OldFlink->Blink != Entry || OldBlink->Flink != Entry)
|
||||
FatalListEntryError(OldBlink, Entry, OldFlink);
|
||||
#endif
|
||||
|
@ -125,6 +133,10 @@ RemoveHeadList(
|
|||
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
|
||||
RtlpCheckListEntry(ListHead);
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
|
||||
FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
|
||||
#endif
|
||||
#endif
|
||||
Entry = ListHead->Flink;
|
||||
Flink = Entry->Flink;
|
||||
|
@ -147,6 +159,10 @@ RemoveTailList(
|
|||
|
||||
#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
|
||||
RtlpCheckListEntry(ListHead);
|
||||
#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
|
||||
if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
|
||||
FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
|
||||
#endif
|
||||
#endif
|
||||
Entry = ListHead->Blink;
|
||||
Blink = Entry->Blink;
|
||||
|
|
Loading…
Reference in a new issue