From c1685e75b75e33aa6e195ce72bf229caa241a0ba Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 16 Jul 2006 00:33:50 +0000 Subject: [PATCH] User32: Menu.c I found a small problem with drawing menu popups. This fixes the problem. svn path=/trunk/; revision=23070 --- reactos/dll/win32/user32/windows/menu.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/reactos/dll/win32/user32/windows/menu.c b/reactos/dll/win32/user32/windows/menu.c index e0ad88181a1..70c2d44a29d 100644 --- a/reactos/dll/win32/user32/windows/menu.c +++ b/reactos/dll/win32/user32/windows/menu.c @@ -4008,9 +4008,12 @@ GetMenuItemInfoA( if (!NtUserMenuItemInfo(Menu, Item, ByPosition, (PROSMENUITEMINFO)&miiW, FALSE)) return FALSE; + RtlCopyMemory(mii, &miiW, miiW.cbSize); + if (!AnsiBuffer || !Count) { if (miiW.dwTypeData) RtlFreeHeap(GetProcessHeap(), 0, miiW.dwTypeData); + mii->dwTypeData = AnsiBuffer; mii->cch = miiW.cch; return TRUE; } @@ -4022,7 +4025,6 @@ GetMenuItemInfoA( } RtlFreeHeap(GetProcessHeap(), 0, miiW.dwTypeData); - RtlCopyMemory(mii, &miiW, miiW.cbSize); mii->dwTypeData = AnsiBuffer; mii->cch = strlen(AnsiBuffer); return TRUE; @@ -4071,9 +4073,12 @@ GetMenuItemInfoW( if (!NtUserMenuItemInfo(Menu, Item, ByPosition, (PROSMENUITEMINFO) &miiW, FALSE)) return FALSE; + RtlCopyMemory(mii, &miiW, miiW.cbSize); // looks okay to over right user data. + if (!String || !Count) { if (miiW.dwTypeData) RtlFreeHeap(GetProcessHeap(), 0, miiW.dwTypeData); + mii->dwTypeData = String; // may not be zero. mii->cch = miiW.cch; return TRUE; } @@ -4084,7 +4089,6 @@ GetMenuItemInfoW( } RtlFreeHeap(GetProcessHeap(), 0, miiW.dwTypeData); - RtlCopyMemory(mii, &miiW, miiW.cbSize); mii->dwTypeData = String; mii->cch = strlenW(String); return TRUE;