summaryrefslogtreecommitdiff
path: root/Zend/zend_signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_signal.c')
-rw-r--r--Zend/zend_signal.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/Zend/zend_signal.c b/Zend/zend_signal.c
index 3e9fd227ac..703097eeb5 100644
--- a/Zend/zend_signal.c
+++ b/Zend/zend_signal.c
@@ -82,16 +82,17 @@ void zend_signal_handler_defer(int signo, siginfo_t *siginfo, void *context)
{
int errno_save = errno;
zend_signal_queue_t *queue, *qtmp;
- zend_bool is_handling_safe = 1;
#ifdef ZTS
/* A signal could hit after TSRM shutdown, in this case globals are already freed. */
- if (NULL == TSRMLS_CACHE || NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
- is_handling_safe = 0;
+ if (tsrm_is_shutdown()) {
+ /* Forward to default handler handler */
+ zend_signal_handler(signo, siginfo, context);
+ return;
}
#endif
- if (EXPECTED(is_handling_safe && SIGG(active))) {
+ if (EXPECTED(SIGG(active))) {
if (UNEXPECTED(SIGG(depth) == 0)) { /* try to handle signal */
if (UNEXPECTED(SIGG(blocked))) {
SIGG(blocked) = 0;
@@ -176,7 +177,7 @@ static void zend_signal_handler(int signo, siginfo_t *siginfo, void *context)
sigset_t sigset;
zend_signal_entry_t p_sig;
#ifdef ZTS
- if (NULL == TSRMLS_CACHE || NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
+ if (tsrm_is_shutdown()) {
p_sig.flags = 0;
p_sig.handler = SIG_DFL;
} else