]> granicus.if.org Git - postgresql/commit
Fix unsafe references to errno within error messaging logic.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Jan 2014 01:03:57 +0000 (20:03 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 30 Jan 2014 01:04:43 +0000 (20:04 -0500)
commit571addd729a400cece396d79696adcc63387e43b
tree5444989203f8b2633295a23cf8737c626ba10da6
parent120c5cc761e0d99a9a2f3349f4031850b0dbd5a0
Fix unsafe references to errno within error messaging logic.

Various places were supposing that errno could be expected to hold still
within an ereport() nest or similar contexts.  This isn't true necessarily,
though in some cases it accidentally failed to fail depending on how the
compiler chanced to order the subexpressions.  This class of thinko
explains recent reports of odd failures on clang-built versions, typically
missing or inappropriate HINT fields in messages.

Problem identified by Christian Kruse, who also submitted the patch this
commit is based on.  (I fixed a few issues in his patch and found a couple
of additional places with the same disease.)

Back-patch as appropriate to all supported branches.
src/backend/commands/tablespace.c
src/backend/port/sysv_sema.c
src/backend/port/sysv_shmem.c
src/bin/psql/command.c
src/common/username.c