Johannes Schindelin <johannes.schindelin@xxxxxx> writes: > With GCC 6, the strdup() function is declared with the "nonnull" > attribute, stating that it is not allowed to pass a NULL value as > parameter. > > In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded > and NULL parameters are handled gracefully. GCC 6 complains about that > now because it thinks that NULL cannot be passed to strdup() anyway. > > Let's just shut up GCC >= 6 in that case and go on with our lives. > > See https://gcc.gnu.org/gcc-6/porting_to.html for details. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > compat/nedmalloc/nedmalloc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c > index 677d1b2..3f28c0b 100644 > --- a/compat/nedmalloc/nedmalloc.c > +++ b/compat/nedmalloc/nedmalloc.c > @@ -956,6 +956,9 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** > char *strdup(const char *s1) > { > char *s2 = 0; > +#if __GNUC__ >= 6 > +#pragma GCC diagnostic ignored "-Wnonnull-compare" > +#endif > if (s1) { > size_t len = strlen(s1) + 1; > s2 = malloc(len); Is it a common convention to place "#pragma GCC diagnostic" immediately before the statement you want to affect, and have the same pragma in effect until the end of the compilation unit? I know this function is at the end and it is not worth doing push/ignored/pop dance, and I assumed that it is the reason why we see a single "ignore from here on", which is much simpler, but it is somewhat distracting. It made me wonder if it makes it easier to read and less distracting to have these three lines in front of and outside the function definition, while thinking that it would have a documentation value to have it immediately before the statement you want to affect. Help me convince myself that this is the best place. Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html