xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Wed Jan 22 11:30:57 PST 2014


 os/io.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 457bc83549e58bb87de96bed02988db3275a7611
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Sat Jan 4 00:09:45 2014 -0800

    If EAGAIN == EWOULDBLOCK, only need to check errno for one of them
    
    Solaris <sys/errno.h> has:
     #define EWOULDBLOCK       EAGAIN
    so checking (errno == EAGAIN || errno == EWOULDBLOCK) is overkill.
    
    This leads cppcheck 1.62 to complain:
    [xserver/os/io.c:365] -> [xserver/os/io.c:365]: (style) Same expression on both sides of '||'.
    [xserver/os/io.c:941] -> [xserver/os/io.c:941]: (style) Same expression on both sides of '||'.
    
    This quiets it, and reduces the number of calls Solaris Studio cc
    generates to the __errno() function to get the thread-specific errno value.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/os/io.c b/os/io.c
index cf5e8f9..8181a86 100644
--- a/os/io.c
+++ b/os/io.c
@@ -102,12 +102,17 @@ typedef struct _connectionOutput {
 static ConnectionInputPtr AllocateInputBuffer(void);
 static ConnectionOutputPtr AllocateOutputBuffer(void);
 
-/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
+/* If EAGAIN and EWOULDBLOCK are distinct errno values, then we check errno
+ * for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
  * systems are broken and return EWOULDBLOCK when they should return EAGAIN
  */
 #ifndef WIN32
-#define ETEST(err) (err == EAGAIN || err == EWOULDBLOCK)
-#else                           /* WIN32 The socket errorcodes differ from the normal errors */
+# if (EAGAIN != EWOULDBLOCK)
+#  define ETEST(err) (err == EAGAIN || err == EWOULDBLOCK)
+# else
+#  define ETEST(err) (err == EAGAIN)
+# endif
+#else   /* WIN32 The socket errorcodes differ from the normal errors */
 #define ETEST(err) (err == EAGAIN || err == WSAEWOULDBLOCK)
 #endif
 


More information about the xorg-commit mailing list