Hallo,

some installation programm (fpd21.exe) crashes when shutting down
like:
Backtrace:
=>0 0x40182b30 (NTDLL.DLL.RtlEnterCriticalSection+0x20) (ebp=40b46580)
  1 0x401bf2c7 (QUEUE_FindMsg+0x27(msgQueue=0x0, hwnd=0x1f0, first=0x0, last=0x0) 
[queue.c:1059]) (ebp=40b4659c)
  2 0x401c69db (WIN_DestroyWindow+0x14b(wndPtr=0x4043e3bc) [win.c:507]) (ebp=40b465d0)
  3 0x401c68f6 (WIN_DestroyWindow+0x66(wndPtr=0x4043e444) [win.c:455]) (ebp=40b465f8)
  4 0x401c8338 (DestroyWindow+0x248(hwnd=0x278) [win.c:1430]) (ebp=40b46614)
  5 0x41711729 (GLK1023.TMP.Update+0x709) (ebp=40c80000)

As msgQueue is NULL in QUEUE_FindMsg, dereferencing msgQueue to enter
the critical section fails.

By not entering the while loop, I can make the program exit
normally. It that the right cure?

Bye

Uwe Bonnes                [EMAIL PROTECTED]

Free Software: If you contribute nothing, expect nothing
--
Index: wine/windows/win.c
===================================================================
RCS file: /home/wine/wine/windows/win.c,v
retrieving revision 1.86
diff -u -w -5 -r1.86 win.c
--- wine/windows/win.c  2000/03/28 20:23:09     1.86
+++ wine/windows/win.c  2000/04/25 21:51:31
@@ -487,11 +494,11 @@
        BOOL          bPostQuit = FALSE;
        WPARAM      wQuitParam = 0;
         MESSAGEQUEUE* msgQ = (MESSAGEQUEUE*) QUEUE_Lock(wndPtr->hmemTaskQ);
         QMSG *qmsg;
 
-       while( (qmsg = QUEUE_FindMsg(msgQ, hwnd, 0, 0)) != 0 )
+       while( (msgQ) && ((qmsg = QUEUE_FindMsg(msgQ, hwnd, 0, 0)) != 0) )
        {
            if( qmsg->msg.message == WM_QUIT )
            {
                bPostQuit = TRUE;
                wQuitParam = qmsg->msg.wParam;

Reply via email to