[NtUser]
authorJames Tabor <james.tabor@reactos.org>
Sat, 2 Sep 2017 04:08:22 +0000 (04:08 +0000)
committerJames Tabor <james.tabor@reactos.org>
Sat, 2 Sep 2017 04:08:22 +0000 (04:08 +0000)
- Fix a potential crash in test_menu_locked_by_window.

svn path=/trunk/; revision=75734

reactos/win32ss/user/ntuser/nonclient.c

index 5e64a44..1b67b36 100644 (file)
@@ -940,10 +940,13 @@ VOID UserDrawCaptionBar(
       /* Draw menu bar */
       if (pWnd->state & WNDS_HASMENU && pWnd->IDMenu) // Should be pWnd->spmenu
       {
-          PMENU menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)); // FIXME!
-          TempRect = CurrentRect;
-          TempRect.bottom = TempRect.top + menu->cyMenu; // Should be pWnd->spmenu->cyMenu;
-          CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
+          PMENU menu;
+          if ((menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)))) // FIXME! Use pWnd->spmenu,
+          {
+             TempRect = CurrentRect;
+             TempRect.bottom = TempRect.top + menu->cyMenu; // Should be pWnd->spmenu->cyMenu;
+             CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
+          }
       }
 
       if (ExStyle & WS_EX_CLIENTEDGE)
@@ -1111,10 +1114,14 @@ NC_DoNCPaint(PWND pWnd, HDC hDC, INT Flags)
      {
          if (!(Flags & DC_NOSENDMSG))
          {
-             PMENU menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)); // FIXME!
-             TempRect = CurrentRect;
-             TempRect.bottom = TempRect.top + menu->cyMenu; // Should be pWnd->spmenu->cyMenu;
-             CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
+             PMENU menu;
+             // Fix crash in test_menu_locked_by_window, should use pWnd->spmenu....
+             if ((menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)))) // FIXME! Use pWnd->spmenu,
+             {
+                TempRect = CurrentRect;
+                TempRect.bottom = TempRect.top + menu->cyMenu; // Should be pWnd->spmenu->cyMenu;
+                CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
+             }
          }
      }