Don't return from inside an exception handler. Modified: trunk/reactos/subsys/win32k/ntuser/message.c _____
Modified: trunk/reactos/subsys/win32k/ntuser/message.c --- trunk/reactos/subsys/win32k/ntuser/message.c 2005-11-23 21:19:00 UTC (rev 19503) +++ trunk/reactos/subsys/win32k/ntuser/message.c 2005-11-23 21:59:34 UTC (rev 19504) @@ -113,24 +113,25 @@
CREATESTRUCTW *Cs; PUNICODE_STRING WindowName; PUNICODE_STRING ClassName; - UINT Size; + UINT Size = 0;
- _SEH_TRY { + _SEH_TRY + { if (MMS_SIZE_WPARAM == MsgMemoryEntry->Size) - { - return (UINT) wParam; + { + Size = (UINT)wParam; } else if (MMS_SIZE_WPARAMWCHAR == MsgMemoryEntry->Size) - { - return (UINT) (wParam * sizeof(WCHAR)); + { + Size = (UINT) (wParam * sizeof(WCHAR)); } else if (MMS_SIZE_LPARAMSZ == MsgMemoryEntry->Size) - { - return (UINT) ((wcslen((PWSTR) lParam) + 1) * sizeof(WCHAR)); + { + Size = (UINT) ((wcslen((PWSTR) lParam) + 1) * sizeof(WCHAR)); } else if (MMS_SIZE_SPECIAL == MsgMemoryEntry->Size) - { - switch(MsgMemoryEntry->Message) + { + switch(MsgMemoryEntry->Message) { case WM_CREATE: case WM_NCCREATE: @@ -146,31 +147,34 @@ { Size += sizeof(WCHAR) + ClassName->Length + sizeof(WCHAR); } - return Size; break;
case WM_NCCALCSIZE: - return wParam ? sizeof(NCCALCSIZE_PARAMS) + sizeof(WINDOWPOS) : sizeof(RECT); + Size = wParam ? sizeof(NCCALCSIZE_PARAMS) + sizeof(WINDOWPOS) : sizeof(RECT); break;
case WM_COPYDATA: - return sizeof(COPYDATASTRUCT) + ((PCOPYDATASTRUCT)lParam)->cbData; + Size = sizeof(COPYDATASTRUCT) + ((PCOPYDATASTRUCT)lParam)->cbData; + break;
default: assert(FALSE); - return 0; + Size = 0; break; } } else { - return MsgMemoryEntry->Size; + Size = MsgMemoryEntry->Size; } - } _SEH_HANDLE { - + } + _SEH_HANDLE + { DPRINT1("Exception caught in MsgMemorySize()! Status: 0x%x\n", _SEH_GetExceptionCode()); - } _SEH_END; - return 0; + Size = 0; + } + _SEH_END; + return Size; }
static FASTCALL NTSTATUS