diff options
Diffstat (limited to 'Zend/zend_execute_API.c')
| -rw-r--r-- | Zend/zend_execute_API.c | 22 | 
1 files changed, 14 insertions, 8 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 34b9957bb7..59f3e61400 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1527,7 +1527,7 @@ void zend_shutdown_timeout_thread(void) /* {{{ */  #define SIGPROF 27  #endif -void zend_set_timeout(long seconds) /* {{{ */ +void zend_set_timeout(long seconds, int reset_signals) /* {{{ */  {  	TSRMLS_FETCH(); @@ -1554,16 +1554,22 @@ void zend_set_timeout(long seconds) /* {{{ */  #	ifdef __CYGWIN__  		setitimer(ITIMER_REAL, &t_r, NULL); -		signal(SIGALRM, zend_timeout); -		sigemptyset(&sigset); -		sigaddset(&sigset, SIGALRM); +		if(reset_signals) { +			signal(SIGALRM, zend_timeout); +			sigemptyset(&sigset); +			sigaddset(&sigset, SIGALRM); +		}  #	else  		setitimer(ITIMER_PROF, &t_r, NULL); -		signal(SIGPROF, zend_timeout); -		sigemptyset(&sigset); -		sigaddset(&sigset, SIGPROF); +		if(reset_signals) { +			signal(SIGPROF, zend_timeout); +			sigemptyset(&sigset); +			sigaddset(&sigset, SIGPROF); +		}  #	endif -		sigprocmask(SIG_UNBLOCK, &sigset, NULL); +		if(reset_signals) { +			sigprocmask(SIG_UNBLOCK, &sigset, NULL); +		}  	}  #	endif  #endif  | 
