mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
[0.4.7][WIN32K:NTUSER] Reference menus owned by a popup menu. CORE-15504
Fixes a BSOD mentioned in CORE-15504
cherry picked from commit 0.4.12-dev-218-g
e3c8002dfc
This commit is contained in:
parent
3504aa7af2
commit
e580690b22
|
@ -4460,6 +4460,10 @@ PopupMenuWndProc(
|
|||
{
|
||||
CREATESTRUCTW *cs = (CREATESTRUCTW *) lParam;
|
||||
pPopupMenu->spmenu = UserGetMenuObject(cs->lpCreateParams);
|
||||
if (pPopupMenu->spmenu)
|
||||
{
|
||||
UserReferenceObject(pPopupMenu->spmenu);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -4504,6 +4508,10 @@ PopupMenuWndProc(
|
|||
|
||||
case WM_NCDESTROY:
|
||||
{
|
||||
if (pPopupMenu->spmenu)
|
||||
{
|
||||
IntReleaseMenuObject(pPopupMenu->spmenu);
|
||||
}
|
||||
DesktopHeapFree(Wnd->head.rpdesk, pPopupMenu );
|
||||
((PMENUWND)Wnd)->ppopupmenu = 0;
|
||||
Wnd->fnid = FNID_DESTROY;
|
||||
|
@ -4519,6 +4527,11 @@ PopupMenuWndProc(
|
|||
ERR("Bad Menu Handle\n");
|
||||
break;
|
||||
}
|
||||
UserReferenceObject(pmenu);
|
||||
if (pPopupMenu->spmenu)
|
||||
{
|
||||
IntReleaseMenuObject(pPopupMenu->spmenu);
|
||||
}
|
||||
pPopupMenu->spmenu = pmenu;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue