[cfe-commits] [patch] -Wformat fixup for vprintf (and friends)
Jean-Daniel Dupas
devlists at shadowlab.org
Thu Feb 16 14:39:37 PST 2012
Le 16 févr. 2012 à 19:17, Ted Kremenek a écrit :
> On Feb 16, 2012, at 1:57 AM, Jean-Daniel Dupas <devlists at shadowlab.org> wrote:
>
>> Hi,
>>
>> This patch implements a long standing FIXME.
>> When calling a non variadic format function(vprintf, vscanf, NSLogv, …), is the format argument references a parameter of the enclosing function, clang never warned.
>> With this change, clang will inhibit the warning only if the parameter is declared as a format string with a compatible type.
>>
>>
>> -- Jean-Daniel
>>
>
> Hi Jean-Daniel,
>
> I've noticed this patch contains seemingly unrelated changes, e.g.:
>
>
>> // RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -pedantic %s
>>
>> +#include <stdarg.h>
>> +
>> extern "C" {
>> -extern int scanf(const char *restrict, ...);
>> -extern int printf(const char *restrict, ...);
>> +extern int scanf(const char *, ...);
>> +extern int printf(const char *, ...);
>> +extern int vprintf(const char *, va_list ap);
>> }
>>
>
>
> What is the motivation for removing the 'restrict' in these test cases? It seems completely unrelated, unnecessary, and actually incorrect since clang defaults to c99.
My bad.
I noticed that the restrict keyword was not supported in C++ member declaration and was interpreted as the parameter name instead, so I removed it to avoid confusion, and I erroneously removed it from the C functions too.
Is this new patch OK ?
-- Jean-Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vprintf.patch
Type: application/octet-stream
Size: 8517 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120216/737add26/attachment.obj>
More information about the cfe-commits
mailing list