diff options
Diffstat (limited to 'Zend/zend.h')
| -rw-r--r-- | Zend/zend.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/Zend/zend.h b/Zend/zend.h index 2d7a21e1dc..5249f8c078 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -520,13 +520,23 @@ END_EXTERN_C() #define zend_bailout() _zend_bailout(__FILE__, __LINE__) +#ifdef HAVE_SIGSETJMP +# define SETJMP(a) sigsetjmp(a, 0) +# define LONGJMP(a,b) siglongjmp(a, b) +# define JMP_BUF sigjmp_buf +#else +# define SETJMP(a) setjmp(a) +# define LONGJMP(a,b) longjmp(a, b) +# define JMP_BUF jmp_buf +#endif + #define zend_try \ { \ - sigjmp_buf *__orig_bailout = EG(bailout); \ - sigjmp_buf __bailout; \ + JMP_BUF *__orig_bailout = EG(bailout); \ + JMP_BUF __bailout; \ \ EG(bailout) = &__bailout; \ - if (sigsetjmp(__bailout, 0)==0) { + if (SETJMP(__bailout)==0) { #define zend_catch \ } else { \ EG(bailout) = __orig_bailout; |
