Index: menu.c =================================================================== --- win32ss/user/ntuser/menu.c (revision 73029) +++ win32ss/user/ntuser/menu.c (working copy) @@ -601,6 +601,7 @@ IntRemoveMenuItem( PMENU pMenu, UINT nPos, UINT wFlags, BOOL bRecurse ) { PITEM item; + PITEM newItems; TRACE("(menu=%p pos=%04x flags=%04x)\n",pMenu, nPos, wFlags); if (!(item = MENU_FindItem( &pMenu, &nPos, wFlags ))) return FALSE; @@ -626,7 +627,11 @@ item++; nPos++; } - pMenu->rgItems = DesktopHeapReAlloc(pMenu->head.rpdesk, pMenu->rgItems, pMenu->cItems * sizeof(ITEM)); + newItems = DesktopHeapReAlloc(pMenu->head.rpdesk, pMenu->rgItems, pMenu->cItems * sizeof(ITEM)); + if (newItems != NULL) + { + pMenu->rgItems = newItems; + } } return TRUE; }