[SHELL32] Fix regression of DoCreateSendToFiles

CoInitializeEx/CoUninitialize added.
CORE-12562
This commit is contained in:
Katayama Hirofumi MZ 2019-12-01 13:55:43 +09:00
parent 4f7bb559fb
commit 79d21f7664

View file

@ -2195,6 +2195,28 @@ CreateShellLink(
return hr;
}
static HRESULT
CreateShellLinkCoInit(
LPCWSTR pszLinkPath,
LPCWSTR pszCmd,
LPCWSTR pszArg OPTIONAL,
LPCWSTR pszDir OPTIONAL,
LPCWSTR pszIconPath OPTIONAL,
INT iIconNr OPTIONAL,
LPCWSTR pszComment OPTIONAL)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
BOOL bCoInit = (hr == S_OK);
hr = CreateShellLink(pszLinkPath, pszCmd, pszArg, pszDir,
pszIconPath, iIconNr, pszComment);
if (bCoInit)
CoUninitialize();
return hr;
}
HRESULT DoCreateSendToFiles(LPCWSTR pszSendTo)
{
WCHAR szTarget[MAX_PATH];
@ -2212,8 +2234,8 @@ HRESULT DoCreateSendToFiles(LPCWSTR pszSendTo)
GetSystemDirectoryW(szShell32, ARRAY_SIZE(szShell32));
PathAppendW(szShell32, L"shell32.dll");
hr = CreateShellLink(szSendToFile, szTarget, NULL, NULL,
szShell32, -IDI_SHELL_MY_DOCUMENTS, NULL);
hr = CreateShellLinkCoInit(szSendToFile, szTarget, NULL, NULL,
szShell32, -IDI_SHELL_MY_DOCUMENTS, NULL);
if (FAILED_UNEXPECTEDLY(hr))
return hr;