User32: Menu.c I found a small problem with drawing menu popups. This fixes the problem.

svn path=/trunk/; revision=23070
This commit is contained in:
James Tabor 2006-07-16 00:33:50 +00:00
parent a7dcf72d50
commit c1685e75b7

View file

@ -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;