Bugfix: strerror_r can return an error, and if it does, POSIX does not specify the content of the buffer

This commit is contained in:
Luke Dashjr 2014-07-07 15:34:00 +00:00
parent a60838d09a
commit 109849e204

View file

@ -1265,7 +1265,8 @@ std::string NetworkErrorString(int err)
#ifdef STRERROR_R_CHAR_P /* GNU variant can return a pointer outside the passed buffer */ #ifdef STRERROR_R_CHAR_P /* GNU variant can return a pointer outside the passed buffer */
s = strerror_r(err, buf, sizeof(buf)); s = strerror_r(err, buf, sizeof(buf));
#else /* POSIX variant always returns message in buffer */ #else /* POSIX variant always returns message in buffer */
(void) strerror_r(err, buf, sizeof(buf)); if (strerror_r(err, buf, sizeof(buf)))
buf[0] = 0;
#endif #endif
return strprintf("%s (%d)", s, err); return strprintf("%s (%d)", s, err);
} }