Am Sonntag, den 06.07.2008, 02:40 +0100 schrieb Alexander Jones: > I'm trying to build Rhythmbox... > > With gcc 4.3 (from Ubuntu 8.10), I'm getting this error in a > helluvalot of places: > > "error: format not a string literal and no format arguments" > > The problem lies in code like this: > > char* error = NULL; > ... > g_warning(error) > > You have to use, e.g.: > g_warning ("%s", error); > for macros like g_warning and g_log, and any API function that > actually accepts a printf-format (like g_error_set) while we're > passing it any old string without any parameters. > > Yeah, I could just use -Wleave-me-alone-ffs or something, but it's > probably worth considering this properly. > > "Discuss." That's because Ubuntu 8.10 uses -Wformat=2. Unfortunately the last time I checked -Wformat=2 it produced a lot of false positives: char *fmt = "%s %d"; print (fmt, "bla", 2); produced a warning for the same reason. It's an error in your case because of -Werror I guess :) In general you shouldn't pass random strings as format strings to those function as this could lead to crashes but in some cases it's fine IMHO.
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil