https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a822eadce6b4f20066fdc3b1a36f311d325b0c86
commit a822eadce6b4f20066fdc3b1a36f311d325b0c86 Author: Katayama Hirofumi MZ <[email protected]> AuthorDate: Mon Sep 28 20:13:28 2020 +0900 Commit: Katayama Hirofumi MZ <[email protected]> CommitDate: Mon Sep 28 20:13:28 2020 +0900 [SHELL32] CoUninitialize only if CoInitialize* is successful Technically CoUninitialize should be called only if CoInitializeEx succeeded (including S_FALSE). CORE-1419 --- dll/win32/shell32/dialogs/dialogs.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dll/win32/shell32/dialogs/dialogs.cpp b/dll/win32/shell32/dialogs/dialogs.cpp index 6996a416076..1e5635cb1d1 100644 --- a/dll/win32/shell32/dialogs/dialogs.cpp +++ b/dll/win32/shell32/dialogs/dialogs.cpp @@ -29,6 +29,7 @@ typedef struct LPCWSTR lpstrTitle; LPCWSTR lpstrDescription; UINT uFlags; + BOOL bCoInited; } RUNFILEDLGPARAMS; typedef BOOL (WINAPI * LPFNOFN) (OPENFILENAMEW *); @@ -549,14 +550,17 @@ static INT_PTR CALLBACK RunDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARA hwndEdit = ComboInfo.hwndItem; ASSERT(::IsWindow(hwndEdit)); - CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); // SHAutoComplete needs co init + // SHAutoComplete needs co init + prfdp->bCoInited = SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)); + SHAutoComplete(hwndEdit, SHACF_FILESYSTEM | SHACF_FILESYS_ONLY | SHACF_URLALL); SetFocus(hwndCombo); return TRUE; case WM_DESTROY: - CoUninitialize(); + if (prfdp->bCoInited) + CoUninitialize(); break; case WM_COMMAND:
