]> git.ipfire.org Git - thirdparty/freeswitch.git/commit
Handle gcc's overzealous unused-result warning
authorTravis Cross <tc@traviscross.com>
Fri, 22 Aug 2014 19:39:11 +0000 (19:39 +0000)
committerTravis Cross <tc@traviscross.com>
Fri, 22 Aug 2014 20:13:39 +0000 (20:13 +0000)
commitb874048efcee4ea985cf9e5592d289ddef2df40a
treef14341486b8b7858b3d68468453303af00a656c8
parentd06d00405528db2deff898ab78d8ab45cfa0337e
Handle gcc's overzealous unused-result warning

Modern static analyzers warn when a variable is set but not used.  GCC
warns when the result of a function marked as
`__attribute__((warn_unused_result))` is not set to some variable,
even when the function is cast to `(void)`, which is the recognized
way of indicating the intent to ignore the result.  We treat all
warnings as errors.

The combination of behaviors here makes it difficult if we really
don't care about the result of the function; the obvious workarounds
are precluded.

GCC's maintainers don't consider this to be a bug:

  Why do you think this is a bug?  warn_unused_result is for cases where
  "not checking the result is either a security problem or always a
  bug".

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509#c1

GLIBC however marks functions like `read` and `write` with this
attribute.  While it certainly in most cases is correct to act on
their return value, in some cases we really just don't care.

So when we see that we're building with GCC, and that we're building
with all warnings enabled, we'll just pass -Wno-unused-result to
disable the warning.

ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
ref: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
configure.ac