mirror of
https://github.com/reactos/reactos.git
synced 2025-05-08 19:27:00 +00:00
[NTUSER] Fix 'Trying to link windows to itself' (#4478) CORE-18132
Fix 'Trying to link windows to itself' on DestroyWindow. Patch by I_Kill_Bugs. This fixes a potential BSOD 0x50 observable in the app Localizer Editor"
This commit is contained in:
parent
efd11b7f56
commit
bd027c9de4
1 changed files with 28 additions and 2 deletions
|
@ -1393,8 +1393,34 @@ WinPosDoOwnedPopups(PWND Window, HWND hWndInsertAfter)
|
||||||
|
|
||||||
if (List[i] == Owner)
|
if (List[i] == Owner)
|
||||||
{
|
{
|
||||||
if (i > 0) hWndInsertAfter = List[i-1];
|
/* We found its Owner, so we must handle it here. */
|
||||||
else hWndInsertAfter = topmost ? HWND_TOPMOST : HWND_TOP;
|
if (i > 0)
|
||||||
|
{
|
||||||
|
if (List[i - 1] != UserHMGetHandle(Window))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* If the popup to be inserted is not already just
|
||||||
|
* before the Owner, insert it there. The modified
|
||||||
|
* hWndInsertAfter will be handled below.
|
||||||
|
*
|
||||||
|
* (NOTE: Do not allow hWndInsertAfter to become equal
|
||||||
|
* to the popup's window handle, as this would cause
|
||||||
|
* the popup to link to itself).
|
||||||
|
*/
|
||||||
|
hWndInsertAfter = List[i - 1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* If the popup to be inserted is already
|
||||||
|
* before the Owner, we are done. */
|
||||||
|
ExFreePoolWithTag(List, USERTAG_WINDOWLIST);
|
||||||
|
return hWndInsertAfter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hWndInsertAfter = topmost ? HWND_TOPMOST : HWND_TOP;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue