On Wed, Sep 13, 2017 at 11:24:31AM -0700, Jonathan Nieder wrote: > For what it's worth, > Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx> Thanks, and thank you for questioning the ptrdiff_t bits that didn't make sense. I _thought_ they felt like nonsense, but couldn't quite puzzle it out. > Compilers' signed/unsigned comparison warning can be noisy, but I'm > starting to feel it's worth the suppression noise to turn it on when > DEVELOPER=1 anyway. What do you think? Is there a way to turn it on > selectively for certain functions on the LHS (like read() and write() > style functions)? Obviously we couldn't turn them on for -Werror at this point. Let me see how bad "-Wsign-compare -Wno-error=sign-compare" is. $ make 2>&1 | grep -c warning: 1391 Ouch. I'm afraid that's probably not going to be very helpful. Even if I were introducing a new problem, I'm not likely to see it amidst the mass of existing complaints. AFAIK there's no way to turn it on for specific functions, but I'm far from a gcc-warning guru. Even if you could, though, the error may be far from the function (e.g., if we store the result in an ssize_t and then compare that with a size_t). Interestingly in the write_in_full() case the code was actually unreachable! But I don't think the compiler is smart enough to know that, because it would have to realize that write_in_full() can only return either -1 or the original value (and not a positive value in between). Coverity _might_ be smart enough, but figuring that out does take some loop analysis (including the assumption that write() never returns more bytes than we asked it to write). -Peff