https://git.reactos.org/?p=reactos.git;a=commitdiff;h=56fdb7adde655af240dc7…
commit 56fdb7adde655af240dc7958f1a9f687093badc7
Author: Thomas Faber <thomas.faber(a)reactos.org>
AuthorDate: Sat Mar 3 11:10:37 2018 +0100
Commit: Thomas Faber <thomas.faber(a)reactos.org>
CommitDate: Sat Mar 3 17:19:26 2018 +0100
[WIN32K:NTUSER] Handle IntGetSystemMenu failure cases. CORE-12180
---
win32ss/user/ntuser/nonclient.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/win32ss/user/ntuser/nonclient.c b/win32ss/user/ntuser/nonclient.c
index 1b67b36c77..8c30fa6900 100644
--- a/win32ss/user/ntuser/nonclient.c
+++ b/win32ss/user/ntuser/nonclient.c
@@ -737,7 +737,7 @@ UserDrawCaptionButton(PWND pWnd, LPRECT Rect, DWORD Style, DWORD
ExStyle, HDC hD
case DFCS_CAPTIONCLOSE:
{
PMENU pSysMenu = IntGetSystemMenu(pWnd, FALSE);
- UINT MenuState = IntGetMenuState(UserHMGetHandle(pSysMenu), SC_CLOSE,
MF_BYCOMMAND); /* in case of error MenuState==0xFFFFFFFF */
+ UINT MenuState = IntGetMenuState(pSysMenu ? UserHMGetHandle(pSysMenu) : NULL,
SC_CLOSE, MF_BYCOMMAND); /* in case of error MenuState==0xFFFFFFFF */
/* A tool window has a smaller Close button */
if (ExStyle & WS_EX_TOOLWINDOW)
@@ -1380,7 +1380,7 @@ NC_DoButton(PWND pWnd, WPARAM wParam, LPARAM lParam)
{
case HTCLOSE:
SysMenu = IntGetSystemMenu(pWnd, FALSE);
- MenuState = IntGetMenuState(UserHMGetHandle(SysMenu), SC_CLOSE, MF_BYCOMMAND);
/* in case of error MenuState==0xFFFFFFFF */
+ MenuState = IntGetMenuState(SysMenu ? UserHMGetHandle(SysMenu) : NULL, SC_CLOSE,
MF_BYCOMMAND); /* in case of error MenuState==0xFFFFFFFF */
if (!(Style & WS_SYSMENU) || (MenuState & (MF_GRAYED|MF_DISABLED)) ||
(pWnd->style & CS_NOCLOSE))
return;
ButtonType = DFCS_CAPTIONCLOSE;
@@ -1554,7 +1554,7 @@ NC_HandleNCLButtonDblClk(PWND pWnd, WPARAM wParam, LPARAM lParam)
case HTSYSMENU:
{
PMENU SysMenu = IntGetSystemMenu(pWnd, FALSE);
- UINT state = IntGetMenuState(UserHMGetHandle(SysMenu), SC_CLOSE, MF_BYCOMMAND);
+ UINT state = IntGetMenuState(SysMenu ? UserHMGetHandle(SysMenu) : NULL, SC_CLOSE,
MF_BYCOMMAND);
/* If the close item of the sysmenu is disabled or not present do nothing */
if ((state & (MF_DISABLED | MF_GRAYED)) || (state == 0xFFFFFFFF))