Thomas Faber : user32: Handle HeapReAlloc failure in RemoveMenu.

Alexandre Julliard julliard at winehq.org
Mon Feb 5 16:48:25 CST 2018


Module: wine
Branch: master
Commit: 7ee4588c0a919e28d1e29baaf327c8492c89b1e2
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7ee4588c0a919e28d1e29baaf327c8492c89b1e2

Author: Thomas Faber <thomas.faber at 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 at reactos.org>
Signed-off-by: Alexandre Julliard <julliard at 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;
 }




More information about the wine-cvs mailing list