summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend.c2
-rw-r--r--Zend/zend.h6
-rw-r--r--Zend/zend_globals.h2
3 files changed, 5 insertions, 5 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index 1f1fa582c1..a7bd8a773d 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -794,7 +794,7 @@ ZEND_API void _zend_bailout(char *filename, uint lineno) /* {{{ */
CG(unclean_shutdown) = 1;
CG(in_compilation) = EG(in_execution) = 0;
EG(current_execute_data) = NULL;
- longjmp(*EG(bailout), FAILURE);
+ siglongjmp(*EG(bailout), FAILURE);
}
/* }}} */
END_EXTERN_C()
diff --git a/Zend/zend.h b/Zend/zend.h
index e85f40394c..2d7a21e1dc 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -522,11 +522,11 @@ END_EXTERN_C()
#define zend_try \
{ \
- jmp_buf *__orig_bailout = EG(bailout); \
- jmp_buf __bailout; \
+ sigjmp_buf *__orig_bailout = EG(bailout); \
+ sigjmp_buf __bailout; \
\
EG(bailout) = &__bailout; \
- if (setjmp(__bailout)==0) {
+ if (sigsetjmp(__bailout, 0)==0) {
#define zend_catch \
} else { \
EG(bailout) = __orig_bailout;
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 0b6214ab1e..3e3e34a1d6 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -161,7 +161,7 @@ struct _zend_executor_globals {
HashTable included_files; /* files already included */
- jmp_buf *bailout;
+ sigjmp_buf *bailout;
int error_reporting;
int orig_error_reporting;