cvs: ZendEngine2(PHP_5_3) / zend_execute_API.c

[email protected] ("Rasmus Lerdorf")
Newsgroups php.zend-engine.cvs
Message-ID <cvsrasmus1205940137@cvsserver>
rasmus		Wed Mar 19 15:22:17 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /ZendEngine2	zend_execute_API.c 
  Log:
  Make sure we set the signal handler when reset_signals is true, regardless
  of the actual timeout value.
  
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.331.2.20.2.24.2.31&r2=1.331.2.20.2.24.2.32&diff_format=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.31 ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.32
--- ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.31	Tue Mar 18 21:42:50 2008
+++ ZendEngine2/zend_execute_API.c	Wed Mar 19 15:22:17 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.31 2008/03/18 21:42:50 rasmus Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.32 2008/03/19 15:22:17 rasmus Exp $ */
 
 #include <stdio.h>
 #include <signal.h>
@@ -1532,9 +1532,7 @@
 	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 @@
 		 */
 		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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.