dbaccess/source/ui/dlg/adodatalinks.cxx |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

New commits:
commit ac411c83c82babb325e2bfd32f4e7009e86eac78
Author:     Julien Nabet <[email protected]>
AuthorDate: Sun Jun 7 15:42:41 2020 +0200
Commit:     Mike Kaganski <[email protected]>
CommitDate: Thu Jun 11 15:28:55 2020 +0200

    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 <[email protected]>

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);
 }
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to