diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-02 10:09:37 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-02 10:09:37 +0200 |
| commit | 2041c9abf5fdaa9d0e632e5e6e4f3488159c9bfe (patch) | |
| tree | b713236483c009f397da8625a186f789c59322c0 | |
| parent | 32b87f855edafdcd5486d2b6c8b0703b343d77ed (diff) | |
| parent | e98e1f92c98b7c8910c55835d8f67d0d9230cc8b (diff) | |
| download | php-git-2041c9abf5fdaa9d0e632e5e6e4f3488159c9bfe.tar.gz | |
Merge branch 'PHP-7.4'
| -rw-r--r-- | ext/pcntl/pcntl.c | 10 | ||||
| -rw-r--r-- | ext/pcntl/php_signal.c | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 2ad6c3974e..254c025ef8 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -941,8 +941,9 @@ PHP_FUNCTION(pcntl_signal) zval *handle; zend_long signo; zend_bool restart_syscalls = 1; + zend_bool restart_syscalls_is_null = 1; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "lz|b", &signo, &handle, &restart_syscalls) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "lz|b!", &signo, &handle, &restart_syscalls, &restart_syscalls_is_null) == FAILURE) { return; } @@ -964,6 +965,13 @@ PHP_FUNCTION(pcntl_signal) } } + /* If restart_syscalls was not explicitly specified and the signal is SIGALRM, then default + * restart_syscalls to false. PHP used to enforce that restart_syscalls is false for SIGALRM, + * so we keep this differing default to reduce the degree of BC breakage. */ + if (restart_syscalls_is_null && signo == SIGALRM) { + restart_syscalls = 0; + } + /* Special long value case for SIG_DFL and SIG_IGN */ if (Z_TYPE_P(handle) == IS_LONG) { if (Z_LVAL_P(handle) != (zend_long) SIG_DFL && Z_LVAL_P(handle) != (zend_long) SIG_IGN) { diff --git a/ext/pcntl/php_signal.c b/ext/pcntl/php_signal.c index e10d380f00..ba65996c1d 100644 --- a/ext/pcntl/php_signal.c +++ b/ext/pcntl/php_signal.c @@ -39,7 +39,7 @@ Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all) #ifdef HAVE_STRUCT_SIGINFO_T act.sa_flags |= SA_SIGINFO; #endif - if (signo == SIGALRM || (! restart)) { + if (!restart) { #ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT; /* SunOS */ #endif |
