mirror of
https://github.com/reactos/reactos.git
synced 2024-07-04 11:44:33 +00:00
[USER32]
MsgiAnsiToUnicodeReply: Use heap buffer for MDICREATSTRUCT instead of returning a pointer to a stackbuffer. svn path=/trunk/; revision=58452
This commit is contained in:
parent
3f5bf2bb48
commit
4e493e9959
|
@ -759,19 +759,22 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg)
|
|||
case WM_CREATE:
|
||||
case WM_NCCREATE:
|
||||
{
|
||||
MDICREATESTRUCTA mdi_cs;
|
||||
MDICREATESTRUCTA *pmdi_cs;
|
||||
CREATESTRUCTA* CsA;
|
||||
CREATESTRUCTW* CsW;
|
||||
NTSTATUS Status;
|
||||
|
||||
CsW = (CREATESTRUCTW*)(UnicodeMsg->lParam);
|
||||
CsA = RtlAllocateHeap(GetProcessHeap(), 0, sizeof(CREATESTRUCTA));
|
||||
CsA = RtlAllocateHeap(GetProcessHeap(), 0, sizeof(CREATESTRUCTA) + sizeof(MDICREATESTRUCTA));
|
||||
if (NULL == CsA)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
memcpy(CsA, CsW, sizeof(CREATESTRUCTW));
|
||||
|
||||
/* pmdi_cs starts right after CsA */
|
||||
pmdi_cs = (MDICREATESTRUCTA*)(CsA + 1);
|
||||
|
||||
RtlInitUnicodeString(&UnicodeString, CsW->lpszName);
|
||||
Status = RtlUnicodeStringToAnsiString(&AnsiString, &UnicodeString, TRUE);
|
||||
if (! NT_SUCCESS(Status))
|
||||
|
@ -796,10 +799,10 @@ MsgiUnicodeToAnsiMessage(HWND hwnd, LPMSG AnsiMsg, LPMSG UnicodeMsg)
|
|||
|
||||
if (GetWindowLongW(hwnd, GWL_EXSTYLE) & WS_EX_MDICHILD)
|
||||
{
|
||||
mdi_cs = *(MDICREATESTRUCTA *)CsW->lpCreateParams;
|
||||
mdi_cs.szTitle = CsA->lpszName;
|
||||
mdi_cs.szClass = CsA->lpszClass;
|
||||
CsA->lpCreateParams = &mdi_cs;
|
||||
*pmdi_cs = *(MDICREATESTRUCTA *)CsW->lpCreateParams;
|
||||
pmdi_cs->szTitle = CsA->lpszName;
|
||||
pmdi_cs->szClass = CsA->lpszClass;
|
||||
CsA->lpCreateParams = pmdi_cs;
|
||||
}
|
||||
|
||||
AnsiMsg->lParam = (LPARAM)CsA;
|
||||
|
|
Loading…
Reference in a new issue