diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2020-06-05 15:37:20 +0200 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2020-06-05 17:25:29 +0200 |
commit | acd091002cdb3373672b6ee8600b1818d02df31d (patch) | |
tree | 0e0c2039eb6ea68bc1705ea7eb86e2cdafc538be /connectivity | |
parent | 27c48894cf45fc34f24ae5e1e8bd7a33ab544359 (diff) |
Use o3tl::safeCoInitializeEx/safeCoUninitializeReinit (ado)
Change-Id: I8eaa5c0f91a5e78888f6a2edea13fa5d2227fb9b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95598
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/ado/ADriver.cxx | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx index 4ec59deeee36..3fc5ce763103 100644 --- a/connectivity/source/drivers/ado/ADriver.cxx +++ b/connectivity/source/drivers/ado/ADriver.cxx @@ -26,6 +26,7 @@ #include <com/sun/star/lang/DisposedException.hpp> #include <connectivity/dbexception.hxx> #include <cppuhelper/supportsservice.hxx> +#include <o3tl/safeCoInitUninit.hxx> #include <strings.hrc> #include <objbase.h> @@ -47,28 +48,12 @@ ODriver::ODriver(const css::uno::Reference< css::lang::XMultiServiceFactory >& _ ,m_xORB(_xORB) ,mnNbCallCoInitializeExForReinit(0) { - HRESULT hr; - while ((hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED)) == RPC_E_CHANGED_MODE) - { - // so we're in RPC_E_CHANGED_MODE case - // the pb was it was already initialized with COINIT_MULTITHREADED - // close this init - CoUninitialize(); - // and increment counter for dtr part - ++mnNbCallCoInitializeExForReinit; - - // and keep on the loop if there were multi initializations - } - if (FAILED(hr)) - std::abort(); + o3tl::safeCoInitializeEx(COINIT_APARTMENTTHREADED, mnNbCallCoInitializeExForReinit); } ODriver::~ODriver() { - CoUninitialize(); - // Put back all the inits, if there were, before the use of ADO - for (int i = 0; i < mnNbCallCoInitializeExForReinit; ++i) - CoInitializeEx(nullptr, COINIT_MULTITHREADED); + o3tl::safeCoUninitializeReinit(COINIT_MULTITHREADED, mnNbCallCoInitializeExForReinit); } void ODriver::disposing() |