Skip to content

Commit b5fef42

Browse files
ThFabbaJoachimHenze
authored andcommitted
[0.4.11] [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 e3c8002
1 parent 2522ec1 commit b5fef42

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

win32ss/user/ntuser/menu.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4504,6 +4504,10 @@ PopupMenuWndProc(
45044504
{
45054505
CREATESTRUCTW *cs = (CREATESTRUCTW *) lParam;
45064506
pPopupMenu->spmenu = UserGetMenuObject(cs->lpCreateParams);
4507+
if (pPopupMenu->spmenu)
4508+
{
4509+
UserReferenceObject(pPopupMenu->spmenu);
4510+
}
45074511
break;
45084512
}
45094513

@@ -4548,6 +4552,10 @@ PopupMenuWndProc(
45484552

45494553
case WM_NCDESTROY:
45504554
{
4555+
if (pPopupMenu->spmenu)
4556+
{
4557+
IntReleaseMenuObject(pPopupMenu->spmenu);
4558+
}
45514559
DesktopHeapFree(Wnd->head.rpdesk, pPopupMenu );
45524560
((PMENUWND)Wnd)->ppopupmenu = 0;
45534561
Wnd->fnid = FNID_DESTROY;
@@ -4563,6 +4571,11 @@ PopupMenuWndProc(
45634571
ERR("Bad Menu Handle\n");
45644572
break;
45654573
}
4574+
UserReferenceObject(pmenu);
4575+
if (pPopupMenu->spmenu)
4576+
{
4577+
IntReleaseMenuObject(pPopupMenu->spmenu);
4578+
}
45664579
pPopupMenu->spmenu = pmenu;
45674580
break;
45684581
}

0 commit comments

Comments
 (0)