Changed: Return error message as an UTF-8 string

This commit is contained in:
kervala 2016-10-21 12:55:02 +02:00
parent 88a87a07a0
commit 2583d447f3

View file

@ -1429,20 +1429,25 @@ 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);