summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2020-06-07 15:42:41 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2020-06-11 15:28:55 +0200
commitac411c83c82babb325e2bfd32f4e7009e86eac78 (patch)
treec9aa6d8e0dd01175ceec6209c796bc4f4e651fb9 /dbaccess
parent345cb192f0bc2fef97ae52ade48efc2d8591a165 (diff)
Use o3tl::safeCoInitializeEx and counterpart (dbaccess/adodatalinks)
+ add calls to o3tl::safeCoUninitializeReinit in error case blocks Change-Id: I781f174a43cd1c6b827299657a667fbb34f50143 Change-Id: I9895db229814837f0c0d756bca2c52c54d3d2e9b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95690 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/ui/dlg/adodatalinks.cxx10
1 files changed, 8 insertions, 2 deletions
diff --git a/dbaccess/source/ui/dlg/adodatalinks.cxx b/dbaccess/source/ui/dlg/adodatalinks.cxx
index fc129b2dea33..5792345ee61c 100644
--- a/dbaccess/source/ui/dlg/adodatalinks.cxx
+++ b/dbaccess/source/ui/dlg/adodatalinks.cxx
@@ -42,7 +42,12 @@ OUString PromptNew(long hWnd)
BSTR _result=nullptr;
// Initialize COM
- ::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
+ hr = ::CoInitializeEx( nullptr, COINIT_APARTMENTTHREADED );
+ bool bDoUninit = true;
+ if (FAILED(hr) && hr != RPC_E_CHANGED_MODE)
+ std::abort();
+ if (hr == RPC_E_CHANGED_MODE)
+ bDoUninit = false;
// Instantiate DataLinks object.
hr = CoCreateInstance(
@@ -83,7 +88,8 @@ OUString PromptNew(long hWnd)
piTmpConnection->Release( );
dlPrompt->Release( );
- CoUninitialize();
+ if (bDoUninit)
+ CoUninitialize();
// Don't we need SysFreeString(_result)?
return o3tl::toU(_result);
}