Matteo Bruni : d3dx9: Don't call CoUninitialize if CoInitializeEx failed.
Alexandre Julliard
julliard at winehq.org
Tue Feb 25 16:58:15 CST 2014
Module: wine
Branch: master
Commit: 8226a187d63e3d355127cf1db830a4281132a598
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8226a187d63e3d355127cf1db830a4281132a598
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Mon Feb 24 19:18:49 2014 +0100
d3dx9: Don't call CoUninitialize if CoInitializeEx failed.
---
dlls/d3dx9_36/surface.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 94301e8..5e87d94 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -1025,7 +1025,7 @@ HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface,
const RECT *pSrcRect, DWORD dwFilter, D3DCOLOR Colorkey, D3DXIMAGE_INFO *pSrcInfo)
{
D3DXIMAGE_INFO imginfo;
- HRESULT hr;
+ HRESULT hr, com_init;
IWICImagingFactory *factory = NULL;
IWICBitmapDecoder *decoder;
@@ -1078,7 +1078,7 @@ HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface,
if (imginfo.ImageFileFormat == D3DXIFF_DIB)
convert_dib_to_bmp((void**)&pSrcData, &SrcDataSize);
- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+ com_init = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (FAILED(CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, &IID_IWICImagingFactory, (void**)&factory)))
goto cleanup_err;
@@ -1181,7 +1181,8 @@ cleanup_err:
if (factory)
IWICImagingFactory_Release(factory);
- CoUninitialize();
+ if (SUCCEEDED(com_init))
+ CoUninitialize();
if (imginfo.ImageFileFormat == D3DXIFF_DIB)
HeapFree(GetProcessHeap(), 0, (void*)pSrcData);
More information about the wine-cvs
mailing list