mirror of
https://github.com/reactos/reactos.git
synced 2026-06-20 12:22:25 +08:00
[WIN32K:NTUSER] Handle realloc failure in IntRemoveMenuItem. CORE-14222
This commit is contained in:
@@ -598,6 +598,7 @@ BOOL FASTCALL
|
||||
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;
|
||||
@@ -617,13 +618,17 @@ IntRemoveMenuItem( PMENU pMenu, UINT nPos, UINT wFlags, BOOL bRecurse )
|
||||
}
|
||||
else
|
||||
{
|
||||
while(nPos < pMenu->cItems)
|
||||
{
|
||||
*item = *(item+1);
|
||||
item++;
|
||||
nPos++;
|
||||
}
|
||||
pMenu->rgItems = DesktopHeapReAlloc(pMenu->head.rpdesk, pMenu->rgItems, pMenu->cItems * sizeof(ITEM));
|
||||
while (nPos < pMenu->cItems)
|
||||
{
|
||||
*item = *(item+1);
|
||||
item++;
|
||||
nPos++;
|
||||
}
|
||||
newItems = DesktopHeapReAlloc(pMenu->head.rpdesk, pMenu->rgItems, pMenu->cItems * sizeof(ITEM));
|
||||
if (newItems)
|
||||
{
|
||||
pMenu->rgItems = newItems;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user