diff --git a/src/SFML/Window/Win32/WglContext.cpp b/src/SFML/Window/Win32/WglContext.cpp index 0949608249..5751603296 100644 --- a/src/SFML/Window/Win32/WglContext.cpp +++ b/src/SFML/Window/Win32/WglContext.cpp @@ -66,13 +66,17 @@ void ensureExtensionsInit(HDC deviceContext) //////////////////////////////////////////////////////////// String getErrorString(DWORD errorCode) { - std::basic_ostringstream > ss; - TCHAR errBuff[256]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode, 0, errBuff, sizeof(errBuff), NULL); - ss << errBuff; - String errMsg(ss.str()); + PTCHAR buffer; + if (FormatMessage(FORMAT_MESSAGE_MAX_WIDTH_MASK | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorCode, 0, reinterpret_cast(&buffer), 256, NULL) != 0) + { + String errMsg(buffer); + LocalFree(buffer); + return errMsg; + } - return errMsg; + std::ostringstream ss; + ss << "Error " << errorCode; + return String(ss.str()); }