https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57137

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-04-22
                 CC|                            |msebor at gcc dot gnu.org
     Ever confirmed|0                           |1
      Known to fail|                            |4.9.3, 5.3.0, 6.0

--- Comment #6 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed.  In addition, as the example below illustrates, the warning in this
case is issued for the call where it could be avoided (in function g) and not
for the call that should be diagnosed (in function h).

$ cat v.c && gcc -S -Wformat -Wformat-nonliteral v.c
void f (const char*, ...) __attribute__ ((format (printf, 1, 2)));

void g (const char*) __attribute__ ((format (printf, 1, 0)));
void g (const char *fmt)
{
  f (fmt, "xxx");
}

void h (const char *fmt)
{
  g (fmt);
}
v.c: In function ā€˜gā€™:
v.c:6:3: warning: format not a string literal, argument types not checked
[-Wformat-nonliteral]
   f (fmt, "xxx");
   ^

Reply via email to