From c0851ad2a3648c8f355508416b6481be9f3090c6 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sat, 29 Nov 2014 08:26:54 +0000 Subject: [PATCH] [NtUser] - Fix timeout for send messages. - Assert if not the same thread while dispatching messages. svn path=/trunk/; revision=65522 --- reactos/win32ss/user/ntuser/msgqueue.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/reactos/win32ss/user/ntuser/msgqueue.c b/reactos/win32ss/user/ntuser/msgqueue.c index 93fdbd7a071..1df07359684 100644 --- a/reactos/win32ss/user/ntuser/msgqueue.c +++ b/reactos/win32ss/user/ntuser/msgqueue.c @@ -2,7 +2,7 @@ * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Win32k subsystem * PURPOSE: Message queues - * FILE: subsystems/win32/win32k/ntuser/msgqueue.c + * FILE: win32ss/user/ntuser/msgqueue.c * PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net) Alexandre Julliard Maarten Lankhorst @@ -751,6 +751,8 @@ co_MsqDispatchOneSentMessage(PTHREADINFO pti) BOOL Ret; LRESULT Result = 0; + ASSERT(pti == PsGetCurrentThreadWin32Thread()); + if (IsListEmpty(&pti->SentMessagesListHead)) { return(FALSE); @@ -1098,7 +1100,8 @@ co_MsqSendMessage(PTHREADINFO ptirec, KeInitializeEvent(&CompletionEvent, NotificationEvent, FALSE); - Timeout.QuadPart = (LONGLONG) uTimeout * (LONGLONG) -10000; + Timeout.QuadPart = Int32x32To64(-10000,uTimeout); // Pass SMTO test with a TO of 0x80000000. + TRACE("Timeout val %lld\n",Timeout.QuadPart) /* FIXME: Increase reference counter of sender's message queue here */ @@ -1181,7 +1184,7 @@ co_MsqSendMessage(PTHREADINFO ptirec, TRACE("MsqSendMessage (blocked) timed out 1\n"); } - while (co_MsqDispatchOneSentMessage(ptirec)) + while (co_MsqDispatchOneSentMessage(pti)) ; } else