Win32: fix WM_TIMER handling
Mattia Barbon [Thu, 3 Jul 2003 16:05:23 +0000 (18:05 +0200)]
Message-ID: <Mahogany-0.64.2-1016-20030703-160523.00@rbnet.it>

p4raw-id: //depot/perl@19965

win32/win32.c

index 083e98e..c41c36d 100644 (file)
@@ -1884,10 +1884,12 @@ win32_async_check(pTHX)
 
        case WM_TIMER: {
            /* alarm() is a one-shot but SetTimer() repeats so kill it */
-           if (w32_timerid) {
+           if (w32_timerid && w32_timerid==msg.wParam) {
                KillTimer(NULL,w32_timerid);
                w32_timerid=0;
            }
+            else
+               goto FallThrough;
            /* Now fake a call to signal handler */
            if (do_raise(aTHX_ 14)) {
                sig_terminate(aTHX_ 14);
@@ -1897,6 +1899,7 @@ win32_async_check(pTHX)
 
        /* Otherwise do normal Win32 thing - in case it is useful */
        default:
+       FallThrough:
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            ours = 0;