Christian Costa : mciqtz32: Only call CoUninitialize when CoInitializeEx succeeds.
Module: wine Branch: master Commit: 0d1cba8e4f1dbe0dd9c693da80e243fc29e2cdba URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d1cba8e4f1dbe0dd9c693da80... Author: Christian Costa <titan.costa(a)wanadoo.fr> Date: Mon Apr 12 11:21:27 2010 +0200 mciqtz32: Only call CoUninitialize when CoInitializeEx succeeds. --- dlls/mciqtz32/mciqtz.c | 9 ++++++--- dlls/mciqtz32/mciqtz_private.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c index b98e163..c826de1 100644 --- a/dlls/mciqtz32/mciqtz.c +++ b/dlls/mciqtz32/mciqtz.c @@ -153,7 +153,8 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags, MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL); - CoInitializeEx(NULL, COINIT_MULTITHREADED); + hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + wma->uninit = SUCCEEDED(hr); hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, &IID_IGraphBuilder, (LPVOID*)&wma->pgraph); if (FAILED(hr)) { @@ -197,7 +198,8 @@ err: IMediaControl_Release(wma->pmctrl); wma->pmctrl = NULL; - CoUninitialize(); + if (wma->uninit) + CoUninitialize(); return MCIERR_INTERNAL; } @@ -220,7 +222,8 @@ static DWORD MCIQTZ_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpP if (wma->opened) { IGraphBuilder_Release(wma->pgraph); IMediaControl_Release(wma->pmctrl); - CoUninitialize(); + if (wma->uninit) + CoUninitialize(); wma->opened = FALSE; } diff --git a/dlls/mciqtz32/mciqtz_private.h b/dlls/mciqtz32/mciqtz_private.h index dcfcad0..caf80de 100644 --- a/dlls/mciqtz32/mciqtz_private.h +++ b/dlls/mciqtz32/mciqtz_private.h @@ -28,6 +28,7 @@ typedef struct { MCIDEVICEID wDevID; BOOL opened; + BOOL uninit; IGraphBuilder* pgraph; IMediaControl* pmctrl; BOOL started;
participants (1)
-
Alexandre Julliard