On Tuesday 26 May 2009 21:05:29 Tom Lane wrote:
> Peter Eisentraut <pete...@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))

I can't reproduce that.  Do you have a concrete example?  Different compiler 
versions, perhaps?

> 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.

That would appear to be the logical solution, but since I can't reproduce the 
problem, I will have trouble to work on this.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to