Fix detection of the result type of strerror_r().
Tom Lane <tgl@sss.pgh.pa.us>
Fix detection of the result type of strerror_r(). The method we've traditionally used, of redeclaring strerror_r() to see if the compiler complains of inconsistent declarations, turns out not to work reliably because some compilers only report a warning, not an error. Amazingly, this has gone undetected for years, even though it certainly breaks our detection of whether strerror_r succeeded. Let's instead test whether the compiler will take the result of strerror_r() as a switch() argument. It's possible this won't work universally either, but it's the best idea I could come up with on the spur of the moment. Back-patch of commit 751f532b9. Buildfarm results indicate that only icc-on-Linux actually has an issue here; perhaps the lack of field reports indicates that people don't build PG for production that way. Discussion: https://postgr.es/m/10877.1537993279@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| config/c-library.m4 | modified | +9 −9 |
| configure | modified | +4 −6 |
| src/include/pg_config.h.in | modified | +1 −1 |
| src/include/pg_config.h.win32 | modified | +1 −1 |
Discussion
- Allowing printf("%m") only where it actually works 50 messages · 2018-05-21 → 2018-10-09