mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
[WIN32K:NTUSER] Add diagnostic asserts in IntLinkWindow() and IntUnlinkWindow(). Don't link a window to itself in IntLinkWindow()! Add diagnostic traces for this situation, as well as in IntLinkHwnd().
Helps in correctly fixing CORE-12071 and CORE-12085.
This commit is contained in:
parent
4d057cf626
commit
ee0511b49d
1 changed files with 14 additions and 0 deletions
|
@ -861,19 +861,28 @@ IntLinkWindow(
|
|||
PWND WndInsertAfter /* Set to NULL if top sibling */
|
||||
)
|
||||
{
|
||||
if (Wnd == WndInsertAfter)
|
||||
{
|
||||
ERR("IntLinkWindow -- Trying to link window 0x%p to itself!!\n", Wnd);
|
||||
return;
|
||||
}
|
||||
|
||||
Wnd->spwndPrev = WndInsertAfter;
|
||||
if (Wnd->spwndPrev)
|
||||
{
|
||||
/* Link after WndInsertAfter */
|
||||
ASSERT(Wnd != WndInsertAfter->spwndNext);
|
||||
Wnd->spwndNext = WndInsertAfter->spwndNext;
|
||||
if (Wnd->spwndNext)
|
||||
Wnd->spwndNext->spwndPrev = Wnd;
|
||||
|
||||
ASSERT(Wnd != Wnd->spwndPrev);
|
||||
Wnd->spwndPrev->spwndNext = Wnd;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Link at the top */
|
||||
ASSERT(Wnd != Wnd->spwndParent->spwndChild);
|
||||
Wnd->spwndNext = Wnd->spwndParent->spwndChild;
|
||||
if (Wnd->spwndNext)
|
||||
Wnd->spwndNext->spwndPrev = Wnd;
|
||||
|
@ -956,6 +965,8 @@ VOID FASTCALL IntLinkHwnd(PWND Wnd, HWND hWndPrev)
|
|||
return;
|
||||
}
|
||||
|
||||
if (Wnd == WndInsertAfter)
|
||||
ERR("IntLinkHwnd -- Trying to link window 0x%p to itself!!\n", Wnd);
|
||||
IntLinkWindow(Wnd, WndInsertAfter);
|
||||
|
||||
/* Fix the WS_EX_TOPMOST flag */
|
||||
|
@ -1254,6 +1265,9 @@ co_UserSetParent(HWND hWndChild, HWND hWndNewParent)
|
|||
VOID FASTCALL
|
||||
IntUnlinkWindow(PWND Wnd)
|
||||
{
|
||||
ASSERT(Wnd != Wnd->spwndNext);
|
||||
ASSERT(Wnd != Wnd->spwndPrev);
|
||||
|
||||
if (Wnd->spwndNext)
|
||||
Wnd->spwndNext->spwndPrev = Wnd->spwndPrev;
|
||||
|
||||
|
|
Loading…
Reference in a new issue