Fix (unreported): 'CoInitializeEx' being called without 'CoUninitialize'
Problem introduced in {rB1f223b9a}. This was possibly causing random crashes in Blender file browser when compiled with ASAN. Microsoft documents indicate that any call to `CoInitializeEx` must be balanced by a corresponding call to `CoUninitialize`. https://docs.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializeex#remarks
This commit is contained in:
parent
874c70d088
commit
b874c152a8
|
@ -299,12 +299,16 @@ bool BLI_file_alias_target(const char *filepath,
|
|||
return false;
|
||||
}
|
||||
|
||||
IShellLinkW *Shortcut = NULL;
|
||||
bool success = false;
|
||||
CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
if (FAILED(hr)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
HRESULT hr = CoCreateInstance(
|
||||
IShellLinkW *Shortcut = NULL;
|
||||
hr = CoCreateInstance(
|
||||
&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLinkW, (LPVOID *)&Shortcut);
|
||||
|
||||
bool success = false;
|
||||
if (SUCCEEDED(hr)) {
|
||||
IPersistFile *PersistFile;
|
||||
hr = Shortcut->lpVtbl->QueryInterface(Shortcut, &IID_IPersistFile, (LPVOID *)&PersistFile);
|
||||
|
@ -328,6 +332,7 @@ bool BLI_file_alias_target(const char *filepath,
|
|||
Shortcut->lpVtbl->Release(Shortcut);
|
||||
}
|
||||
|
||||
CoUninitialize();
|
||||
return (success && r_targetpath[0]);
|
||||
# else
|
||||
UNUSED_VARS(r_targetpath, filepath);
|
||||
|
|
Loading…
Reference in New Issue