Quellcode durchsuchen

win-capture: Don't leak dynamic library references

Michael Fabian 'Xaymar' Dirks vor 6 Jahren
Ursprung
Commit
c5928bff4a

+ 5 - 0
plugins/win-capture/get-graphics-offsets/dxgi-offsets.cpp

@@ -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;
 }
 

+ 2 - 0
plugins/win-capture/inject-library.c

@@ -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;
 	}