From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Christian Kruse <christian(at)2ndquadrant(dot)com> |
Cc: | Andres Freund <andres(at)2ndquadrant(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Suspicion of a compiler bug in clang: using ternary operator in ereport() |
Date: | 2014-01-30 15:01:28 |
Message-ID: | 31026.1391094088@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Christian Kruse <christian(at)2ndquadrant(dot)com> writes:
> Have a look at the psprintf() call: we first have a _("failed to look
> up effective user id %ld: %s") as an argument, then we have a (long)
> user_id and after that we have a ternary expression using errno. Isn't
> it possible that the first _() changes errno?
While I haven't actually read the gettext docs, I'm pretty sure that
gettext() is defined to preserve errno. It's supposed to be something
that you can drop into existing printf's without thinking, and if
it mangled errno that would certainly not be the case.
If this isn't true, we've got probably hundreds of places that would
need fixing, most of them of the form printf(_(...), strerror(errno)).
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Christian Kruse | 2014-01-30 15:19:00 | Re: Suspicion of a compiler bug in clang: using ternary operator in ereport() |
Previous Message | Bruce Momjian | 2014-01-30 14:42:14 | Re: INTERVAL overflow detection is terribly broken |