diff options
author | Rasmus Lerdorf <rasmus@php.net> | 2008-03-19 15:22:17 +0000 |
---|---|---|
committer | Rasmus Lerdorf <rasmus@php.net> | 2008-03-19 15:22:17 +0000 |
commit | d2f23dbe64d92483d5891c050aeadda3a0e58ec2 (patch) | |
tree | 470bf66d71985c0cb6149feb0ae57f853f541ef2 /Zend/zend_execute_API.c | |
parent | 54482745baf86ea94b7f8c41e5c5156fc111a890 (diff) | |
download | php-git-d2f23dbe64d92483d5891c050aeadda3a0e58ec2.tar.gz |
Make sure we set the signal handler when reset_signals is true, regardless
of the actual timeout value.
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 59f3e61400..2b939e4147 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1532,9 +1532,7 @@ void zend_set_timeout(long seconds, int reset_signals) /* {{{ */ TSRMLS_FETCH(); EG(timeout_seconds) = seconds; - if(!seconds) { - return; - } + #ifdef ZEND_WIN32 if (timeout_thread_initialized == 0 && InterlockedIncrement(&timeout_thread_initialized) == 1) { /* We start up this process-wide thread here and not in zend_startup(), because if Zend @@ -1542,25 +1540,28 @@ void zend_set_timeout(long seconds, int reset_signals) /* {{{ */ */ zend_init_timeout_thread(); } - PostThreadMessage(timeout_thread_id, WM_REGISTER_ZEND_TIMEOUT, (WPARAM) GetCurrentThreadId(), (LPARAM) seconds); + if(seconds) PostThreadMessage(timeout_thread_id, WM_REGISTER_ZEND_TIMEOUT, (WPARAM) GetCurrentThreadId(), (LPARAM) seconds); #else # ifdef HAVE_SETITIMER { struct itimerval t_r; /* timeout requested */ sigset_t sigset; - t_r.it_value.tv_sec = seconds; - t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0; + if(seconds) { + t_r.it_value.tv_sec = seconds; + t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0; # ifdef __CYGWIN__ - setitimer(ITIMER_REAL, &t_r, NULL); + setitimer(ITIMER_REAL, &t_r, NULL); + } if(reset_signals) { signal(SIGALRM, zend_timeout); sigemptyset(&sigset); sigaddset(&sigset, SIGALRM); } # else - setitimer(ITIMER_PROF, &t_r, NULL); + setitimer(ITIMER_PROF, &t_r, NULL); + } if(reset_signals) { signal(SIGPROF, zend_timeout); sigemptyset(&sigset); |