Changed: Return error message as an UTF-8 string

This commit is contained in:
kervala 2016-10-21 12:55:02 +02:00
parent c9411e43c5
commit 486282262e

View file

@ -1429,22 +1429,27 @@ int getLastError()
std::string formatErrorMessage(int errorCode) std::string formatErrorMessage(int errorCode)
{ {
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
LPVOID lpMsgBuf; LPVOID lpMsgBuf = NULL;
FormatMessage( DWORD len = FormatMessageW(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, NULL,
errorCode, errorCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf, (LPWSTR) &lpMsgBuf,
0, 0,
NULL NULL
); );
string ret = (char*)lpMsgBuf; // empty buffer, an error occured
if (len == 0) return toString("FormatMessage returned error %d", getLastError());
// convert wchar_t* to std::string
string ret = wideToUtf8(lpMsgBuf);
// Free the buffer. // Free the buffer.
LocalFree( lpMsgBuf ); LocalFree(lpMsgBuf);
return ret; return ret;
#else #else