win-capture: Don't leak dynamic library references

This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2019-07-24 15:33:48 +02:00
parent 4159477e43
commit c5928bff4a
2 changed files with 7 additions and 0 deletions

View File

@@ -56,6 +56,7 @@ static inline bool dxgi_init(dxgi_info &info)
create = (d3d10create_t)GetProcAddress(d3d10_module,
"D3D10CreateDeviceAndSwapChain");
if (!create) {
FreeLibrary(d3d10_module);
return false;
}
@@ -64,12 +65,14 @@ static inline bool dxgi_init(dxgi_info &info)
hr = create_factory(&factory_iid, (void **)&factory);
if (FAILED(hr)) {
FreeLibrary(d3d10_module);
return false;
}
hr = factory->EnumAdapters1(0, &adapter);
factory->Release();
if (FAILED(hr)) {
FreeLibrary(d3d10_module);
return false;
}
@@ -87,10 +90,12 @@ static inline bool dxgi_init(dxgi_info &info)
D3D10_SDK_VERSION, &desc, &info.swap, &device);
adapter->Release();
if (FAILED(hr)) {
FreeLibrary(d3d10_module);
return false;
}
device->Release();
FreeLibrary(d3d10_module);
return true;
}

View File

@@ -113,6 +113,7 @@ int inject_library_safe_obf(DWORD thread_id, const wchar_t *dll,
size_t i;
if (!lib || !user32) {
FreeLibrary(lib);
return INJECT_ERROR_UNLIKELY_FAIL;
}
@@ -123,6 +124,7 @@ int inject_library_safe_obf(DWORD thread_id, const wchar_t *dll,
#endif
if (!proc) {
FreeLibrary(lib);
return INJECT_ERROR_UNLIKELY_FAIL;
}