On 08.02.2015 16:17, Pierre Schweitzer wrote:
On 08/02/2015 13:46, Nikolay Sivov wrote:
- if (MessageString)
- {
len = lstrlenA(MessageString) + 1;
msg = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
if (msg == NULL)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
return FALSE;
}
MultiByteToWideChar(CP_ACP, 0, MessageString, -1, msg, len);
- }
That's not how A->W conversion works, we have tons of examples for that.
Well.... http://source.winehq.org/git/wine.git/blob/HEAD:/dlls/setupapi/query.c#l118
Feel free to point at some other location.
Yes, that one should be fixed too I suppose. Clean way is to call mbtowc twice, and first call would return a length of resulting WCHAR string.
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); if (!GetVersionExW(&OsVersionInfo)) return FALSE;
InitializeCriticalSection(&setuplog_critical); SETUPAPI_hInstance = hinstDLL; break; case DLL_PROCESS_DETACH: if (lpvReserved) break;
DeleteCriticalSection(&setuplog_critical); if (CABINET_hInstance) FreeLibrary(CABINET_hInstance); break;
You won't need these calls once you init it like the rest of Wine code does. Also what about closing files on DLL_PROCESS_DETACH?
I couldn't find any evidence that Windows does this. And they'll be closed as soon the process dies.
Yes, but it will leak every time you do LoadLibrary/FreeLibrary.