Thomas Faber : user32: Handle HeapReAlloc failure in RemoveMenu.
Module: wine Branch: master Commit: 7ee4588c0a919e28d1e29baaf327c8492c89b1e2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=7ee4588c0a919e28d1e29baaf... Author: Thomas Faber <thomas.faber(a)reactos.org> Date: Sat Feb 3 10:47:01 2018 +0100 user32: Handle HeapReAlloc failure in RemoveMenu. The array size is being decreased so failure is not critical here, but it can still happen, e.g. when DPH is in use. Signed-off-by: Thomas Faber <thomas.faber(a)reactos.org> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/menu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index 38deaef..f4194ed 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -3989,14 +3989,16 @@ BOOL WINAPI RemoveMenu( HMENU hMenu, UINT nPos, UINT wFlags ) } else { + MENUITEM *new_items; while(nPos < menu->nItems) { *item = *(item+1); item++; nPos++; } - menu->items = HeapReAlloc( GetProcessHeap(), 0, menu->items, - menu->nItems * sizeof(MENUITEM) ); + new_items = HeapReAlloc( GetProcessHeap(), 0, menu->items, + menu->nItems * sizeof(MENUITEM) ); + if (new_items) menu->items = new_items; } return TRUE; }
participants (1)
-
Alexandre Julliard