diff options
author | Xinchen Hui <laruence@php.net> | 2012-01-04 08:25:06 +0000 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2012-01-04 08:25:06 +0000 |
commit | b31c12435cdd260485d3ec078299d18f26f69f53 (patch) | |
tree | 9732b7c076aa91a289c20166ae015a4713d8092c /Zend/zend_signal.h | |
parent | 5d2dba81a1274e24d2e1c0538c479b4ffd0e9081 (diff) | |
download | php-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.h | 4 |
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; \ |