Preparsing sprintf format strings

Paolo Bonzini bonzini@gnu.org
Fri Oct 12 12:19:00 GMT 2007


Andreas Schwab wrote:
> rridge@csclub.uwaterloo.ca (Ross Ridge) writes:
> 
>> The entire parsing of the format string is affected by the multi-byte
>> character encoding.  I don't know how GCC would be able tell that a byte
>> with the same value as '%' in the middle of string would actually be
>> interpreted as '%' character rather than a part of an extended multibyte
>> character.  This can easily happen with the ISO 2022-JP encoding.
> 
> The compiler is supposed to know the encoding of the strings.

More precisely, you should tell the compiler about the input and 
execution charset.  For example, this should make sure that a statement 
like this

printf ("\x1B$B%s\x1B(B");
                ^^
          this %s is not a printf escape!

does not yield a -Wformat warning even with -finput-charset=ISO-2022-JP 
-fexec-charset=ISO-2022-JP.

Currently, the above program *does* yield a warning, though (PR33748).

Paolo



More information about the Gcc mailing list