From: Anatol Belski Date: Wed, 13 Feb 2019 02:30:55 +0000 (-0800) Subject: Change the way timer queue timer is deleted X-Git-Tag: php-7.4.0alpha1~1063 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4f4cf9874d863f69782383e6c34d12eaf43fd2bc;p=php Change the way timer queue timer is deleted 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. --- diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index f5d08f1f0d..048e0af967 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -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");