diff --git a/reactos/subsystems/win32/win32k/ntuser/keyboard.c b/reactos/subsystems/win32/win32k/ntuser/keyboard.c index 62b2d7d9042..04be007a32d 100644 --- a/reactos/subsystems/win32/win32k/ntuser/keyboard.c +++ b/reactos/subsystems/win32/win32k/ntuser/keyboard.c @@ -941,6 +941,12 @@ W32kKeyProcessMessage(LPMSG Msg, VscVkTable = KeyboardLayout->pVSCtoVK_E1; } + if (!VscVkTable) + { + DPRINT1("somethings wrong, Prefix=0x%x", Prefix); + return; + } + RawVk = 0xff; while (VscVkTable->Vsc) { diff --git a/reactos/subsystems/win32/win32k/ntuser/message.c b/reactos/subsystems/win32/win32k/ntuser/message.c index afec69e5cd1..319e599d859 100644 --- a/reactos/subsystems/win32/win32k/ntuser/message.c +++ b/reactos/subsystems/win32/win32k/ntuser/message.c @@ -2492,18 +2492,23 @@ NtUserMessageCall( UserEnterExclusive(); /* Validate input */ - if (hWnd && (hWnd != INVALID_HANDLE_VALUE) && !(Window = UserGetWindowObject(hWnd))) + if (hWnd && (hWnd != INVALID_HANDLE_VALUE)) { - UserLeave(); - return FALSE; + Window = UserGetWindowObject(hWnd); + if (!Window) + { + UserLeave(); + return FALSE; + } } + switch(dwType) { case FNID_DEFWINDOWPROC: - UserRefObjectCo(Window, &Ref); + if (Window) UserRefObjectCo(Window, &Ref); lResult = IntDefWindowProc(Window, Msg, wParam, lParam, Ansi); Ret = TRUE; - UserDerefObjectCo(Window); + if (Window) UserDerefObjectCo(Window); break; case FNID_SENDNOTIFYMESSAGE: Ret = UserSendNotifyMessage(hWnd, Msg, wParam, lParam);