Merge pull request #4479

109849e Bugfix: strerror_r can return an error, and if it does, POSIX does not specify the content of the buffer (Luke Dashjr)
This commit is contained in:
Wladimir J. van der Laan 2014-07-08 13:03:25 +02:00
commit 418d4ad110
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
1 changed files with 2 additions and 1 deletions

View File

@ -1252,7 +1252,8 @@ std::string NetworkErrorString(int err)
#ifdef STRERROR_R_CHAR_P /* GNU variant can return a pointer outside the passed buffer */
s = strerror_r(err, buf, sizeof(buf));
#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
return strprintf("%s (%d)", s, err);
}