static void zend_signal_handler(int signo, siginfo_t *siginfo, void *context)
{
int errno_save = errno;
- struct sigaction sa = {{0}};
+ struct sigaction sa;
sigset_t sigset;
- zend_signal_entry_t p_sig = SIGG(handlers)[signo-1];
+ zend_signal_entry_t p_sig;
+ #ifdef ZTS
+ if (NULL == TSRMG_BULK_STATIC(zend_signal_globals_id, zend_signal_globals_t *)) {
+ p_sig.flags = 0;
+ p_sig.handler = SIG_DFL;
+ } else
+ #endif
+ p_sig = SIGG(handlers)[signo-1];
if (p_sig.handler == SIG_DFL) { /* raise default handler */
if (sigaction(signo, NULL, &sa) == 0) {