From 72a5d1743277bbbd4ccac9c92dfb665a30dd4812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Tue, 27 Jan 2004 13:21:35 +0000 Subject: [PATCH] Fix cross-thread WM_SETTEXT messages svn path=/trunk/; revision=7889 --- reactos/subsys/win32k/ntuser/message.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/reactos/subsys/win32k/ntuser/message.c b/reactos/subsys/win32k/ntuser/message.c index df19b81a0d6..8e4cb717764 100644 --- a/reactos/subsys/win32k/ntuser/message.c +++ b/reactos/subsys/win32k/ntuser/message.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: message.c,v 1.46 2003/12/29 10:09:33 gvg Exp $ +/* $Id: message.c,v 1.47 2004/01/27 13:21:35 gvg Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -566,7 +566,8 @@ NtUserQuerySendMessage(DWORD Unknown0) #define MMS_SIZE_WPARAM -1 #define MMS_SIZE_WPARAMWCHAR -2 -#define MMS_SIZE_SPECIAL -3 +#define MMS_SIZE_LPARAMSZ -3 +#define MMS_SIZE_SPECIAL -4 #define MMS_FLAG_READ 0x01 #define MMS_FLAG_WRITE 0x02 #define MMS_FLAG_READWRITE (MMS_FLAG_READ | MMS_FLAG_WRITE) @@ -584,7 +585,7 @@ static MSGMEMORY MsgMemory[] = { WM_GETTEXT, MMS_SIZE_WPARAMWCHAR, MMS_FLAG_WRITE }, { WM_NCCALCSIZE, MMS_SIZE_SPECIAL, MMS_FLAG_READWRITE }, { WM_NCCREATE, sizeof(CREATESTRUCTW), MMS_FLAG_READWRITE }, - { WM_SETTEXT, MMS_SIZE_WPARAMWCHAR, MMS_FLAG_READ }, + { WM_SETTEXT, MMS_SIZE_LPARAMSZ, MMS_FLAG_READ }, { WM_STYLECHANGED, sizeof(STYLESTRUCT), MMS_FLAG_READ }, { WM_STYLECHANGING, sizeof(STYLESTRUCT), MMS_FLAG_READWRITE }, { WM_WINDOWPOSCHANGED, sizeof(WINDOWPOS), MMS_FLAG_READ }, @@ -611,7 +612,7 @@ FindMsgMemory(UINT Msg) } static UINT FASTCALL -MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam) +MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam, LPARAM lParam) { if (MMS_SIZE_WPARAM == MsgMemoryEntry->Size) { @@ -621,6 +622,10 @@ MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam) { return (UINT) (wParam * sizeof(WCHAR)); } + else if (MMS_SIZE_LPARAMSZ == MsgMemoryEntry->Size) + { + return (UINT) ((wcslen((PWSTR) lParam) + 1) * sizeof(WCHAR)); + } else if (MMS_SIZE_SPECIAL == MsgMemoryEntry->Size) { switch(MsgMemoryEntry->Message) @@ -735,7 +740,7 @@ IntSendMessage(HWND hWnd, } else { - lParamBufferSize = MsgMemorySize(MsgMemoryEntry, wParam); + lParamBufferSize = MsgMemorySize(MsgMemoryEntry, wParam, lParam); } if (! NT_SUCCESS(PackParam(&lParamPacked, Msg, wParam, lParam))) @@ -792,7 +797,7 @@ CopyMsgToKernelMem(MSG *KernelModeMsg, MSG *UserModeMsg) } /* Determine required size */ - Size = MsgMemorySize(MsgMemoryEntry, UserModeMsg->wParam); + Size = MsgMemorySize(MsgMemoryEntry, UserModeMsg->wParam, UserModeMsg->lParam); if (0 != Size) { @@ -846,7 +851,7 @@ CopyMsgToUserMem(MSG *UserModeMsg, MSG *KernelModeMsg) } /* Determine required size */ - Size = MsgMemorySize(MsgMemoryEntry, UserModeMsg->wParam); + Size = MsgMemorySize(MsgMemoryEntry, UserModeMsg->wParam, UserModeMsg->lParam); if (0 != Size) {