From 134a020e2a3314ad2ddcfe22741e60ba251138dc Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 4 Sep 2013 13:10:15 +0200 Subject: Implement windowsErrorString for WinRT FORMAT_MESSAGE_ALLOCATE_BUFFER isn't available for WinRT Change-Id: Ib9cf2a11a4e84f3ff010665bd53b4ffb0d0bfcce Reviewed-by: Andrew Knight Reviewed-by: Joerg Bornemann Reviewed-by: Friedemann Kleint --- src/corelib/kernel/qsystemerror.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/corelib/kernel/qsystemerror.cpp') diff --git a/src/corelib/kernel/qsystemerror.cpp b/src/corelib/kernel/qsystemerror.cpp index 8d375f1fb3..e22ea75e15 100644 --- a/src/corelib/kernel/qsystemerror.cpp +++ b/src/corelib/kernel/qsystemerror.cpp @@ -84,6 +84,7 @@ namespace { static QString windowsErrorString(int errorCode) { QString ret; +#ifndef Q_OS_WINRT wchar_t *string = 0; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, @@ -94,6 +95,17 @@ static QString windowsErrorString(int errorCode) NULL); ret = QString::fromWCharArray(string); LocalFree((HLOCAL)string); +#else + wchar_t errorString[1024]; + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + errorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPWSTR)&errorString, + sizeof(errorString)/sizeof(wchar_t), + NULL); + ret = QString::fromWCharArray(errorString); +#endif // Q_OS_WINRT if (ret.isEmpty() && errorCode == ERROR_MOD_NOT_FOUND) ret = QString::fromLatin1("The specified module could not be found."); -- cgit v1.2.3