]> granicus.if.org Git - php/commitdiff
Change the way timer queue timer is deleted
authorAnatol Belski <ab@php.net>
Wed, 13 Feb 2019 02:30:55 +0000 (18:30 -0800)
committerAnatol Belski <ab@php.net>
Wed, 13 Feb 2019 02:30:55 +0000 (18:30 -0800)
As discussed in bug #77580, passing INVALID_HANDLE_VALUE for the
completion event improves compatibility with Wine/ReactOS. The timer
callback itself is supposed to complete fast enough, no behavior change
is to expect.

Zend/zend_execute_API.c

index f5d08f1f0de66ae384e9261e7ff98578f3d17e08..048e0af967ad897afce1b4eb3e2ea61fb3a1925e 100644 (file)
@@ -1238,7 +1238,7 @@ static void zend_set_timeout_ex(zend_long seconds, int reset_signals) /* {{{ */
                timer, so we could end up with just an ignored timeout. Instead
                delete and recreate. */
        if (NULL != tq_timer) {
-               if (!DeleteTimerQueueTimer(NULL, tq_timer, NULL)) {
+               if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) {
                        tq_timer = NULL;
                        zend_error_noreturn(E_ERROR, "Could not delete queued timer");
                        return;
@@ -1312,7 +1312,7 @@ void zend_unset_timeout(void) /* {{{ */
 {
 #ifdef ZEND_WIN32
        if (NULL != tq_timer) {
-               if (!DeleteTimerQueueTimer(NULL, tq_timer, NULL)) {
+               if (!DeleteTimerQueueTimer(NULL, tq_timer, INVALID_HANDLE_VALUE)) {
                        EG(timed_out) = 0;
                        tq_timer = NULL;
                        zend_error_noreturn(E_ERROR, "Could not delete queued timer");