Require a C99-compliant snprintf(), and remove related workarounds.
Tom Lane <tgl@sss.pgh.pa.us>
Require a C99-compliant snprintf(), and remove related workarounds. Since our substitute snprintf now returns a C99-compliant result, there's no need anymore to have complicated code to cope with pre-C99 behavior. We can just make configure substitute snprintf.c if it finds that the system snprintf() is pre-C99. (Note: I do not believe that there are any platforms where this test will trigger that weren't already being rejected due to our other C99-ish feature requirements for snprintf. But let's add the check for paranoia's sake.) Then, simplify the call sites that had logic to cope with the pre-C99 definition. I also dropped some stuff that was being paranoid about the possibility of snprintf overrunning the given buffer. The only reports we've ever heard of that being a problem were for Solaris 7, which is long dead, and we've sure not heard any reports of these assertions triggering in a long time. So let's drop that complexity too. Likewise, drop some code that wasn't trusting snprintf to set errno when it returns -1. That would be not-per-spec, and again there's no real reason to believe it is a live issue, especially not for snprintfs that pass all of configure's feature checks. Discussion: https://postgr.es/m/17245.1534289329@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| config/c-library.m4 | modified | +27 −0 |
| configure | modified | +45 −1 |
| configure.in | modified | +10 −1 |
| src/backend/utils/misc/guc.c | modified | +8 −15 |
| src/common/psprintf.c | modified | +14 −59 |
| src/interfaces/libpq/pqexpbuffer.c | modified | +21 −47 |
Discussion
- C99 compliance for src/port/snprintf.c 95 messages · 2018-08-14 → 2018-09-28