Peter Eisentraut <peter_e@gmx.net> writes:
> I tried throwing various kinds of subtle garbage into the errmsg/ngettext
> line, but it was all discovered by gcc -Wall.
I experimented with this and found that indeed both format strings are
checked ... if you have a reasonably recent libintl.h AND you have
specified --enable-nls. Otherwise it all goes to heck, apparently
because the compiler doesn't try to look through our substitute
definition
#define ngettext(s,p,n) ((n) == 1 ? (s) : (p))
So I'm still of the opinion that we need some work here. I think
that instead of this #define we need an actual function that we can
hang a couple of __attribute_format_arg__ markers on. Otherwise
things are going to slip by us. (Not sure about you, but I don't
build with --enable-nls by default.)
regards, tom lane