summaryrefslogtreecommitdiff
path: root/Zend/zend.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend.h')
-rw-r--r--Zend/zend.h16
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;