"Socket operation on non-socket" error due to strange syntax
        Posted  
        
            by Robert S. Barnes
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Robert S. Barnes
        
        
        
        Published on 2010-06-17T09:12:06Z
        Indexed on 
            2010/06/17
            9:23 UTC
        
        
        Read the original article
        Hit count: 377
        
I ran across the error Socket operation on non-socket in some of my networking code when calling connect and spent a lot of time trying to figure out what was causing it.  I finally figured out that the following line of code was causing the problem:
if ((sockfd = socket( ai->ai_family, ai->ai_socktype, ai->ai_protocol) < 0)) {
See the problem? Here's what the line should look like:
if ((sockfd = socket( ai->ai_family, ai->ai_socktype, ai->ai_protocol)) < 0) {
What I don't understand is why the first, incorrect line doesn't produce a warning. To put it another way, shouldn't the general form:
if ( foo = bar() < baz ) do_something();
look odd to the compiler, especially running with g++ -Wall -Wextra?  
If not, shouldn't it at least show up as "bad style" to cppcheck, which I'm also running as part of my compile?
© Stack Overflow or respective owner