mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
Fix an issue with cncnet launcher, incorrectly called CloseHandle on loaded module handle
This commit is contained in:
parent
f59421bbe8
commit
2d5403338e
26
main.c
26
main.c
@ -422,6 +422,11 @@ ULONG __stdcall ddraw_Release(IDirectDrawImpl *This)
|
||||
ddraw->render.ev = NULL;
|
||||
}
|
||||
|
||||
if(This->real_dll)
|
||||
{
|
||||
FreeLibrary(This->real_dll);
|
||||
}
|
||||
|
||||
DeleteCriticalSection(&This->cs);
|
||||
|
||||
/* restore old wndproc, subsequent ddraw creation will otherwise fail */
|
||||
@ -488,21 +493,23 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk
|
||||
*/
|
||||
}
|
||||
|
||||
HMODULE real_dll = LoadLibrary("system32\\ddraw.dll");
|
||||
if(!real_dll)
|
||||
{
|
||||
return DDERR_GENERIC;
|
||||
}
|
||||
|
||||
IDirectDrawImpl *This = (IDirectDrawImpl *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawImpl));
|
||||
This->lpVtbl = &iface;
|
||||
printf(" This = %p\n", This);
|
||||
*lplpDD = (LPDIRECTDRAW)This;
|
||||
This->Ref = 0;
|
||||
ddraw_AddRef(This);
|
||||
|
||||
ddraw = This;
|
||||
|
||||
This->DirectDrawCreate = (HRESULT WINAPI (*)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*))GetProcAddress(real_dll, "DirectDrawCreate");
|
||||
This->real_dll = LoadLibrary("system32\\ddraw.dll");
|
||||
if(!This->real_dll)
|
||||
{
|
||||
ddraw_Release(This);
|
||||
return DDERR_GENERIC;
|
||||
}
|
||||
|
||||
CloseHandle(real_dll);
|
||||
This->DirectDrawCreate = (HRESULT WINAPI (*)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*))GetProcAddress(This->real_dll, "DirectDrawCreate");
|
||||
|
||||
if(!This->DirectDrawCreate)
|
||||
{
|
||||
@ -628,8 +635,5 @@ HRESULT WINAPI DirectDrawCreate(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnk
|
||||
GetPrivateProfileStringA("ddraw", "sensitivity", "0", tmp, sizeof(tmp), ini_path);
|
||||
This->sensitivity = strtof(tmp, NULL);
|
||||
|
||||
This->Ref = 0;
|
||||
ddraw_AddRef(This);
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user