chiark / gitweb /
udp.c: Add explicit cast to muffle bogus Clang warning.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 19 Sep 2019 20:01:24 +0000 (20:01 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 21 Sep 2019 10:06:45 +0000 (11:06 +0100)
Clang is complaining (`-Wsign-compare') about the comparison between
`salen' (`socklen_t', i.e., an `int' with a false moustache) and
`size_t' (`unsigned int' in this case).  I can see that some warnings of
this kind are useful, but not this one.  The usual arithmetic
conversions apply, so `salen' is converted to `size_t'.  If it was
negative before, it's now very positive, which will trip the the
comparison and call `FAIL' -- which seems like a plausible outcome.

Muffle the warning by adding an explicit cast.  This is ugly and
pointless, though: other suggestions are welcome.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
udp.c

diff --git a/udp.c b/udp.c
index 9be56e1caeb14acd95dd907eafe1a86d38e04095..ee38d51587eb02f56ec47ea98cb5ec0db3982173 100644 (file)
--- a/udp.c
+++ b/udp.c
@@ -269,7 +269,7 @@ static bool_t record_socket_gotaddr(struct udpcommon *uc, struct udpsock *us,
     socklen_t salen=sizeof(us->addr);
     int r=getsockname(us->fd,&us->addr.sa,&salen);
     if (r) FAIL("getsockname()");
-    if (salen>sizeof(us->addr)) { errno=0; FAIL("getsockname() length"); }
+    if ((size_t)salen>sizeof(us->addr)) { errno=0; FAIL("getsockname() length"); }
     return True;
 
  failed: