QtCore/QtNetwork/QTestlib: Fix build with MinGW/g++ 8.1 x64

Fix warnings about invalid function type casts (return types
conflicting with the FARPROC returned by GetProcAddress()) like:
corelib\global\qoperatingsystemversion_win.cpp💯48: error: cast between incompatible function types from 'FARPROC' {aka 'long long int (*)()'} to 'RtlGetVersionFunction' {aka 'long int (*)(_OSVERSIONINFOW*)'} [-Werror=cast-function-type]
io\qlockfile_win.cpp:158:85: error: cast between incompatible function types from 'FARPROC' {aka 'long long int (*)()'} to 'GetModuleFileNameExFunc' {aka 'long unsigned int (*)(void*, HINSTANCE__*, wchar_t*, long unsigned int)'} [-Werror=cast-function-type]

by introducing nested casts.

Task-number: QTBUG-68742
Task-number: QTQAINFRA-2095
Change-Id: I3a5d2ea901bf5dc35963c589d61cf3dc7393377a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
Friedemann Kleint 2018-06-22 09:57:55 +02:00
parent 7c34e0a7b4
commit e21d1d3856
4 changed files with 9 additions and 8 deletions

View File

@ -97,7 +97,7 @@ static inline OSVERSIONINFOEX determineWinOsVersion()
// because linking to it at load time will not pass the Windows App Certification Kit // because linking to it at load time will not pass the Windows App Certification Kit
// https://msdn.microsoft.com/en-us/library/windows/hardware/ff561910.aspx // https://msdn.microsoft.com/en-us/library/windows/hardware/ff561910.aspx
RtlGetVersionFunction pRtlGetVersion = reinterpret_cast<RtlGetVersionFunction>( RtlGetVersionFunction pRtlGetVersion = reinterpret_cast<RtlGetVersionFunction>(
GetProcAddressA(ntdll, "RtlGetVersion")); reinterpret_cast<QFunctionPointer>(GetProcAddressA(ntdll, "RtlGetVersion")));
if (Q_UNLIKELY(!pRtlGetVersion)) if (Q_UNLIKELY(!pRtlGetVersion))
return result; return result;

View File

@ -153,9 +153,8 @@ QString QLockFilePrivate::processNameByPid(qint64 pid)
HMODULE hPsapi = LoadLibraryA("psapi"); HMODULE hPsapi = LoadLibraryA("psapi");
if (!hPsapi) if (!hPsapi)
return QString(); return QString();
GetModuleFileNameExFunc qGetModuleFileNameEx = reinterpret_cast<GetModuleFileNameExFunc>(
GetModuleFileNameExFunc qGetModuleFileNameEx reinterpret_cast<QFunctionPointer>(GetProcAddress(hPsapi, "GetModuleFileNameExW")));
= (GetModuleFileNameExFunc)GetProcAddress(hPsapi, "GetModuleFileNameExW");
if (!qGetModuleFileNameEx) { if (!qGetModuleFileNameEx) {
FreeLibrary(hPsapi); FreeLibrary(hPsapi);
return QString(); return QString();

View File

@ -1454,8 +1454,8 @@ static bool q_NTLM_SSPI_library_load()
securityDLLHandle = LoadLibrary(L"secur32.dll"); securityDLLHandle = LoadLibrary(L"secur32.dll");
if (securityDLLHandle != NULL) { if (securityDLLHandle != NULL) {
INIT_SECURITY_INTERFACE pInitSecurityInterface = INIT_SECURITY_INTERFACE pInitSecurityInterface =
(INIT_SECURITY_INTERFACE)GetProcAddress(securityDLLHandle, reinterpret_cast<INIT_SECURITY_INTERFACE>(
"InitSecurityInterfaceW"); reinterpret_cast<QFunctionPointer>(GetProcAddress(securityDLLHandle, "InitSecurityInterfaceW")));
if (pInitSecurityInterface != NULL) if (pInitSecurityInterface != NULL)
pSecurityFunctionTable = pInitSecurityInterface(); pSecurityFunctionTable = pInitSecurityInterface();
} }

View File

@ -1603,8 +1603,10 @@ DebugSymbolResolver::DebugSymbolResolver(HANDLE process)
bool success = false; bool success = false;
m_dbgHelpLib = LoadLibraryW(L"dbghelp.dll"); m_dbgHelpLib = LoadLibraryW(L"dbghelp.dll");
if (m_dbgHelpLib) { if (m_dbgHelpLib) {
SymInitializeType symInitialize = (SymInitializeType)(GetProcAddress(m_dbgHelpLib, "SymInitialize")); SymInitializeType symInitialize = reinterpret_cast<SymInitializeType>(
m_symFromAddr = (SymFromAddrType)(GetProcAddress(m_dbgHelpLib, "SymFromAddr")); reinterpret_cast<QFunctionPointer>(GetProcAddress(m_dbgHelpLib, "SymInitialize")));
m_symFromAddr = reinterpret_cast<SymFromAddrType>(
reinterpret_cast<QFunctionPointer>(GetProcAddress(m_dbgHelpLib, "SymFromAddr")));
success = symInitialize && m_symFromAddr && symInitialize(process, NULL, TRUE); success = symInitialize && m_symFromAddr && symInitialize(process, NULL, TRUE);
} }
if (!success) if (!success)