diff options
| author | Rasmus Lerdorf <rasmus@php.net> | 2008-03-18 18:34:11 +0000 |
|---|---|---|
| committer | Rasmus Lerdorf <rasmus@php.net> | 2008-03-18 18:34:11 +0000 |
| commit | c9e0781d2abab740f81a620c27a30391a11466ab (patch) | |
| tree | fde421399331cf0d8c560d5a028c0be04a4f6407 /Zend/zend.c | |
| parent | 4d9cbaf7a4e51b98479fc51a33479fe69e56a8f5 (diff) | |
| download | php-git-c9e0781d2abab740f81a620c27a30391a11466ab.tar.gz | |
Use sigsetjmp and siglongjmp instead of setjmp/longjmp in order to be
consistent in how we deal with the signal mask. POSIX doesn't specify
what to do with the signal mask in setjmp/longjmp which has resulted in
the signal mask getting saved on *BSD and not getting saved on Linux.
Making the behaviour explicit via sigsetjmp/siglongjmp gives us
consistency and saves expensive sigprocmask() syscalls on *BSD.
Diffstat (limited to 'Zend/zend.c')
| -rw-r--r-- | Zend/zend.c | 2 |
1 files changed, 1 insertions, 1 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() |
