summaryrefslogtreecommitdiff
path: root/Zend/zend_signal.h
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2012-01-04 08:25:06 +0000
committerXinchen Hui <laruence@php.net>2012-01-04 08:25:06 +0000
commitb31c12435cdd260485d3ec078299d18f26f69f53 (patch)
tree9732b7c076aa91a289c20166ae015a4713d8092c /Zend/zend_signal.h
parent5d2dba81a1274e24d2e1c0538c479b4ffd0e9081 (diff)
downloadphp-git-b31c12435cdd260485d3ec078299d18f26f69f53.tar.gz
Fixed bug #60627 (httpd.worker segfault on startup with php_value)
Diffstat (limited to 'Zend/zend_signal.h')
-rw-r--r--Zend/zend_signal.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/Zend/zend_signal.h b/Zend/zend_signal.h
index 54f47ee54f..02d6495437 100644
--- a/Zend/zend_signal.h
+++ b/Zend/zend_signal.h
@@ -69,9 +69,13 @@ typedef struct _zend_signal_globals_t {
BEGIN_EXTERN_C()
ZEND_API extern int zend_signal_globals_id;
END_EXTERN_C()
+# define ZEND_SIGNAL_BLOCK_INTERRUPUTIONS() if (EXPECTED(zend_signal_globals_id)) { SIGG(depth)++; }
+# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (EXPECTED(zend_signal_globals_id) && UNEXPECTED((--SIGG(depth))==SIGG(blocked))) { zend_signal_handler_unblock(TSRMLS_C); }
#else /* ZTS */
# define SIGG(v) (zend_signal_globals.v)
extern ZEND_API zend_signal_globals_t zend_signal_globals;
+# define ZEND_SIGNAL_BLOCK_INTERRUPUTIONS() SIGG(depth)++;
+# define ZEND_SIGNAL_UNBLOCK_INTERRUPTIONS() if (UNEXPECTED((--SIGG(depth))==SIGG(blocked))) { zend_signal_handler_unblock(TSRMLS_C); }
#endif /* not ZTS */
# define SIGNAL_BEGIN_CRITICAL() sigset_t oldmask; \