Re: Confused by segfault with legitimate call to strerror(3) on amd64 / sysctl (3) setting `odd' errno's

Christian Kandeler schrieb:
On Friday 16 January 2009 09:53, Christoph Mallon wrote:

main() {

int mib[4];

size_t len;

if (sysctlnametomib("kern.ipc.shmmax", mib, &len) != 0) {
printf("Errno: %d\n", errno);
errx(errno, "Error: %s", strerror(errno));
The use of errno is wrong. printf might change errno.

I don't think printf() can set errno. And even if it could, it

Of course it can. See ISO/IEC 9899:1999 (E) §7.5:3.

wouldn't matter, because C has call-by-value semantics.

This has nothing to do with call-by-value. errno is read (even twice!) *after* the call to printf().
freebsd-hackers@xxxxxxxxxxx mailing list
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"