From c6c6b423cfd190f25f055ad78998b3055fff62e1 Mon Sep 17 00:00:00 2001 From: David King Date: Fri, 12 Oct 2018 16:20:39 +0100 Subject: [PATCH] _dbus_get_is_errno_eagain_or_ewouldblock: Avoid warning EAGAIN and EWOULDBLOCK are documented to possibly be numerically equal, for instance in errno(3), and a simple logical OR check will trigger the -Wlogical-op warning of GCC. The GCC developers consider the warning to work as-designed in this case: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602 Avoid such a warning by explicitly checking if the values are identical. Fixes: https://gitlab.freedesktop.org/dbus/dbus/issues/225 Signed-off-by: David King Reviewed-by: Simon McVittie (cherry picked from commit a65319134209d39f5eb6e5425ec6a35fad05bcd7) --- dbus/dbus-sysdeps-unix.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 565e089..e8cd5b3 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -4364,7 +4364,15 @@ _dbus_daemon_unpublish_session_bus_address (void) dbus_bool_t _dbus_get_is_errno_eagain_or_ewouldblock (int e) { + /* Avoid the -Wlogical-op GCC warning, which can be triggered when EAGAIN and + * EWOULDBLOCK are numerically equal, which is permitted as described by + * errno(3). + */ +#if EAGAIN == EWOULDBLOCK + return e == EAGAIN; +#else return e == EAGAIN || e == EWOULDBLOCK; +#endif } /** -- 2.7.4