summaryrefslogtreecommitdiff
path: root/async.h
diff options
context:
space:
mode:
authorTom Lee <github@tomlee.co>2015-11-18 00:04:54 -0800
committerTom Lee <github@tomlee.co>2015-11-18 00:28:10 -0800
commitbb1747b1bf92431e5c5e9699824d2ef52f863f45 (patch)
tree337c54763f6166f0868ceaaa32dcd1c5f7948daa /async.h
parentdb1c46dac7f0c54310e05a682cc444b7ae287dcf (diff)
Fix strerror_r on some esoteric platforms
Defining _XOPEN_SOURCE=1 causes strange behavior on Debian kfreebsd archs (i.e. GNU userspace with FreeBSD kernel) when _GNU_SOURCE is not defined. Not sure I fully understand the bizarre semantics, but it seems to use the XSI-compliant interface (int strerror_r(int, char*, size_t)) but the GNU implementation (char *strerror_r(int, char*, size_t)) such that strerror_r returns 32-bits of a 64-bit char * on x86_64 kfreebsd. We would expect strerror_r to return zero when using the XSI-compliant strerror_r implementation or a 64-bit char* when using the GNU version. Instead, we get something in between! Unless I'm missing something, being more explicit about what version of _XOPEN_SOURCE we want seems to be the prudent thing to do here -- and if folks want the GNU implementation of strerror_r for some reason they can always -D_GNU_SOURCE explicitly.
Diffstat (limited to 'async.h')
0 files changed, 0 insertions, 0 deletions