Work around a subtle portability problem in use of printf %s format.
Tom Lane <tgl@sss.pgh.pa.us>
Work around a subtle portability problem in use of printf %s format. Depending on which spec you read, field widths and precisions in %s may be counted either in bytes or characters. Our code was assuming bytes, which is wrong at least for glibc's implementation, and in any case libc might have a different idea of the prevailing encoding than we do. Hence, for portable results we must avoid using anything more complex than just "%s" unless the string to be printed is known to be all-ASCII. This patch fixes the cases I could find, including the psql formatting failure reported by Hernan Gonzalez. In HEAD only, I also added comments to some places where it appears safe to continue using "%.*s".
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/parser/scansup.c | modified | +13 −3 |
| src/interfaces/libpq/fe-misc.c | modified | +25 −3 |