Cast error code only once in wxSysErrorMsgStr()

No real changes, just simplify code a little bit by replacing multiple
casts with a single one -- and explaining why is it necessary.
This commit is contained in:
Vadim Zeitlin
2021-01-17 23:37:38 +01:00
parent febd185fc6
commit 51cc083f31

View File

@@ -1156,15 +1156,19 @@ wxString wxSysErrorMsgStr(unsigned long nErrCode)
char buffer[1024];
char *errorMsg = buffer;
// We use the same unsigned long type under all platforms, but under
// Unix the error code is just int.
const int errorCode = static_cast<int>(nErrCode);
#if defined(__GLIBC__) && defined(_GNU_SOURCE) // GNU-specific strerror_r
// GNU's strerror_r has a weird interface -- it doesn't
// necessarily copy anything to the buffer given; use return
// value instead.
errorMsg = strerror_r((int)nErrCode, buffer, sizeof(buffer));
errorMsg = strerror_r(errorCode, buffer, sizeof(buffer));
#elif defined( __VMS )
errorMsg = strerror((int)nErrCode);
errorMsg = strerror(errorCode);
#else // XSI-compliant strerror_r
strerror_r((int)nErrCode, buffer, sizeof(buffer));
strerror_r(errorCode, buffer, sizeof(buffer));
#endif
// at this point errorMsg might not point to buffer anymore