diff options
author | George Peter Banyard <girgias@php.net> | 2020-09-23 23:46:58 +0100 |
---|---|---|
committer | George Peter Banyard <girgias@php.net> | 2020-10-10 14:45:20 +0100 |
commit | 150ebfdf77320b24b0358f8a903e90d7940ad4a4 (patch) | |
tree | 06e83f7b7f4fed49bdc08033d093aa94dad9ac8f /main/streams/plain_wrapper.c | |
parent | f211f1586f1e93acee49df852b999b9402d32f5d (diff) | |
download | php-git-150ebfdf77320b24b0358f8a903e90d7940ad4a4.tar.gz |
Suppress bogus [-Wlogical-op] warning from GCC
See GCC bug 69602: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602
which emits the warning for (errno == EWOULDBLOCK || errno == EAGAIN)
which is the correct way of handling errors as the value of EWOULDBLOCK
and EAGAIN is implementation defined.
Therefore introduce a new macro function PHP_IS_TRANSIENT_ERROR()
which handles the case when EWOULDBLOCK and EAGAIN are identical.
Thanks to @twose for the idea.
Diffstat (limited to 'main/streams/plain_wrapper.c')
-rw-r--r-- | main/streams/plain_wrapper.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/main/streams/plain_wrapper.c b/main/streams/plain_wrapper.c index 8a891ddf72..0373cc4c94 100644 --- a/main/streams/plain_wrapper.c +++ b/main/streams/plain_wrapper.c @@ -351,7 +351,7 @@ static ssize_t php_stdiop_write(php_stream *stream, const char *buf, size_t coun ssize_t bytes_written = write(data->fd, buf, count); #endif if (bytes_written < 0) { - if (errno == EWOULDBLOCK || errno == EAGAIN) { + if (PHP_IS_TRANSIENT_ERROR(errno)) { return 0; } if (errno == EINTR) { @@ -420,7 +420,7 @@ static ssize_t php_stdiop_read(php_stream *stream, char *buf, size_t count) } if (ret < 0) { - if (errno == EWOULDBLOCK || errno == EAGAIN) { + if (PHP_IS_TRANSIENT_ERROR(errno)) { /* Not an error. */ ret = 0; } else if (errno == EINTR) { |