framework/source/accelerators/storageholder.cxx     |   36 ++++++++++----------
 framework/source/inc/accelerators/storageholder.hxx |    3 +
 include/svx/xmleohlp.hxx                            |    4 +-
 svx/source/xml/xmleohlp.cxx                         |   14 +++----
 4 files changed, 29 insertions(+), 28 deletions(-)

New commits:
commit 7fe0a4cddf23f0c15e95ff59e658ee3bbe11db51
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Dec 18 20:01:14 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Dec 20 08:33:50 2021 +0100

    osl::Mutex->std::mutex in StorageHolder
    
    Change-Id: Ie0ababcea79b445ac73ffd4e69d260a7641af663
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127106
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/framework/source/accelerators/storageholder.cxx 
b/framework/source/accelerators/storageholder.cxx
index a42e932ac259..e870ec0b71b8 100644
--- a/framework/source/accelerators/storageholder.cxx
+++ b/framework/source/accelerators/storageholder.cxx
@@ -47,7 +47,7 @@ StorageHolder::~StorageHolder()
 
 void StorageHolder::forgetCachedStorages()
 {
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
     for (auto & lStorage : m_lStorages)
     {
         TStorageInfo& rInfo = lStorage.second;
@@ -59,13 +59,13 @@ void StorageHolder::forgetCachedStorages()
 
 void StorageHolder::setRootStorage(const css::uno::Reference< 
css::embed::XStorage >& xRoot)
 {
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
     m_xRoot = xRoot;
 }
 
 css::uno::Reference< css::embed::XStorage > StorageHolder::getRootStorage() 
const
 {
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
     return m_xRoot;
 }
 
@@ -76,9 +76,9 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::openPath(const OUStri
     std::vector<OUString> lFolders    = 
StorageHolder::impl_st_parsePath(sNormedPath);
 
     // SAFE -> ----------------------------------
-    osl::ResettableMutexGuard aReadLock(m_mutex);
+    std::unique_lock aReadLock(m_mutex);
     css::uno::Reference< css::embed::XStorage > xParent = m_xRoot;
-    aReadLock.clear();
+    aReadLock.unlock();
     // <- SAFE ----------------------------------
 
     css::uno::Reference< css::embed::XStorage > xChild;
@@ -89,7 +89,7 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::openPath(const OUStri
         OUString  sCheckPath (sRelPath + lFolder + PATH_SEPARATOR);
 
         // SAFE -> ------------------------------
-        aReadLock.reset();
+        aReadLock.lock();
 
         // If we found an already open storage ... we must increase
         // its use count. Otherwise it will may be closed too early :-)
@@ -101,12 +101,12 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::openPath(const OUStri
             ++(pInfo->UseCount);
             xChild = pInfo->Storage;
 
-            aReadLock.clear();
+            aReadLock.unlock();
             // <- SAFE ------------------------------
         }
         else
         {
-            aReadLock.clear();
+            aReadLock.unlock();
             // <- SAFE ------------------------------
 
             try
@@ -130,7 +130,7 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::openPath(const OUStri
                     throw;
                 }
 
-            osl::MutexGuard g(m_mutex);
+            std::unique_lock g(m_mutex);
             pInfo = &(m_lStorages[sCheckPath]);
             pInfo->Storage  = xChild;
             pInfo->UseCount = 1;
@@ -154,7 +154,7 @@ StorageHolder::TStorageList 
StorageHolder::getAllPathStorages(const OUString& sP
     StorageHolder::TStorageList  lStoragesOfPath;
     OUString              sRelPath;
 
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     for (auto const& lFolder : lFolders)
     {
@@ -196,7 +196,7 @@ void StorageHolder::commitPath(const OUString& sPath)
 
     // SAFE -> ------------------------------
     {
-        osl::MutexGuard aReadLock(m_mutex);
+        std::unique_lock aReadLock(m_mutex);
         xCommit.set(m_xRoot, css::uno::UNO_QUERY);
     }
     // <- SAFE ------------------------------
@@ -223,7 +223,7 @@ void StorageHolder::closePath(const OUString& rPath)
         sParentPath = sCurrentRelPath;
     }
 
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     std::vector<OUString>::reverse_iterator pIt2;
     for (  pIt2  = lFolders.rbegin();
@@ -249,7 +249,7 @@ void StorageHolder::notifyPath(const OUString& sPath)
 {
     OUString sNormedPath = StorageHolder::impl_st_normPath(sPath);
 
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     TPath2StorageInfo::iterator pIt1 = m_lStorages.find(sNormedPath);
     if (pIt1 == m_lStorages.end())
@@ -268,7 +268,7 @@ void StorageHolder::addStorageListener(      
XMLBasedAcceleratorConfiguration* p
 {
     OUString sNormedPath = StorageHolder::impl_st_normPath(sPath);
 
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     TPath2StorageInfo::iterator pIt1 = m_lStorages.find(sNormedPath);
     if (pIt1 == m_lStorages.end())
@@ -285,7 +285,7 @@ void StorageHolder::removeStorageListener(      
XMLBasedAcceleratorConfiguration
 {
     OUString sNormedPath = StorageHolder::impl_st_normPath(sPath);
 
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     TPath2StorageInfo::iterator pIt1 = m_lStorages.find(sNormedPath);
     if (pIt1 == m_lStorages.end())
@@ -299,7 +299,7 @@ void StorageHolder::removeStorageListener(      
XMLBasedAcceleratorConfiguration
 
 OUString StorageHolder::getPathOfStorage(const css::uno::Reference< 
css::embed::XStorage >& xStorage)
 {
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
 
     for (auto const& lStorage : m_lStorages)
     {
@@ -334,7 +334,7 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::getParentStorage(cons
 
     // SAFE -> ----------------------------------
     {
-        osl::MutexGuard aReadLock(m_mutex);
+        std::unique_lock aReadLock(m_mutex);
 
         // b)
         if (c < 2)
@@ -361,7 +361,7 @@ css::uno::Reference< css::embed::XStorage > 
StorageHolder::getParentStorage(cons
 
 StorageHolder& StorageHolder::operator=(const StorageHolder& rCopy)
 {
-    osl::MutexGuard g(m_mutex);
+    std::unique_lock g(m_mutex);
     m_xRoot     = rCopy.m_xRoot;
     m_lStorages = rCopy.m_lStorages;
     return *this;
diff --git a/framework/source/inc/accelerators/storageholder.hxx 
b/framework/source/inc/accelerators/storageholder.hxx
index 22a301277cd7..d2e17ee1a550 100644
--- a/framework/source/inc/accelerators/storageholder.hxx
+++ b/framework/source/inc/accelerators/storageholder.hxx
@@ -21,6 +21,7 @@
 
 #include <com/sun/star/embed/XStorage.hpp>
 
+#include <mutex>
 #include <unordered_map>
 #include <vector>
 
@@ -60,7 +61,7 @@ class StorageHolder final
 
     // member
     private:
-        mutable osl::Mutex m_mutex;
+        mutable std::mutex m_mutex;
 
         /** @short  TODO */
         css::uno::Reference< css::embed::XStorage > m_xRoot;
commit 71f27d514549b7354f2c7b759c661e689e586162
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Dec 18 21:58:57 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Dec 20 08:33:37 2021 +0100

    use cppu::BaseMutex in SvXMLEmbeddedObjectHelper
    
    because passing a ref of a local member to a parent class
    means passing uninitialised data
    
    Change-Id: I8ebfce789da19538379cfa0888a63a9b31d35a0b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127118
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/include/svx/xmleohlp.hxx b/include/svx/xmleohlp.hxx
index d252ee8e2d0f..38ea69ffa053 100644
--- a/include/svx/xmleohlp.hxx
+++ b/include/svx/xmleohlp.hxx
@@ -20,6 +20,7 @@
 #ifndef INCLUDED_SVX_XMLEOHLP_HXX
 #define INCLUDED_SVX_XMLEOHLP_HXX
 
+#include <cppuhelper/basemutex.hxx>
 #include <cppuhelper/compbase.hxx>
 #include <osl/mutex.hxx>
 #include <com/sun/star/document/XEmbeddedObjectResolver.hpp>
@@ -45,10 +46,9 @@ class OutputStorageWrapper_Impl;
 
 
 class SVXCORE_DLLPUBLIC SvXMLEmbeddedObjectHelper final :
+    public cppu::BaseMutex,
     public cppu::WeakComponentImplHelper< 
css::document::XEmbeddedObjectResolver, css::container::XNameAccess >
 {
-    ::osl::Mutex                maMutex;
-
     OUString             maCurContainerStorageName;
 
 
diff --git a/svx/source/xml/xmleohlp.cxx b/svx/source/xml/xmleohlp.cxx
index 6db555d8ddb0..0f33e96c03a1 100644
--- a/svx/source/xml/xmleohlp.cxx
+++ b/svx/source/xml/xmleohlp.cxx
@@ -120,14 +120,14 @@ void SAL_CALL OutputStorageWrapper_Impl::closeOutput()
 }
 
 SvXMLEmbeddedObjectHelper::SvXMLEmbeddedObjectHelper() :
-    WeakComponentImplHelper< XEmbeddedObjectResolver, XNameAccess >( maMutex ),
+    WeakComponentImplHelper< XEmbeddedObjectResolver, XNameAccess >( m_aMutex 
),
     mpDocPersist( nullptr ),
     meCreateMode( SvXMLEmbeddedObjectHelperMode::Read )
 {
 }
 
 SvXMLEmbeddedObjectHelper::SvXMLEmbeddedObjectHelper( 
::comphelper::IEmbeddedHelper& rDocPersist, SvXMLEmbeddedObjectHelperMode 
eCreateMode ) :
-    WeakComponentImplHelper< XEmbeddedObjectResolver, XNameAccess >( maMutex ),
+    WeakComponentImplHelper< XEmbeddedObjectResolver, XNameAccess >( m_aMutex 
),
     mpDocPersist( nullptr ),
     meCreateMode( SvXMLEmbeddedObjectHelperMode::Read )
 {
@@ -546,7 +546,7 @@ rtl::Reference<SvXMLEmbeddedObjectHelper> 
SvXMLEmbeddedObjectHelper::Create(
 
 OUString SAL_CALL SvXMLEmbeddedObjectHelper::resolveEmbeddedObjectURL(const 
OUString& rURL)
 {
-    MutexGuard          aGuard( maMutex );
+    MutexGuard          aGuard( m_aMutex );
 
     OUString sRet;
     try
@@ -571,7 +571,7 @@ OUString SAL_CALL 
SvXMLEmbeddedObjectHelper::resolveEmbeddedObjectURL(const OUSt
 Any SAL_CALL SvXMLEmbeddedObjectHelper::getByName(
         const OUString& rURLStr )
 {
-    MutexGuard          aGuard( maMutex );
+    MutexGuard          aGuard( m_aMutex );
     Any aRet;
     if( SvXMLEmbeddedObjectHelperMode::Read == meCreateMode )
     {
@@ -672,7 +672,7 @@ Sequence< OUString > SAL_CALL 
SvXMLEmbeddedObjectHelper::getElementNames()
 
 sal_Bool SAL_CALL SvXMLEmbeddedObjectHelper::hasByName( const OUString& 
rURLStr )
 {
-    MutexGuard          aGuard( maMutex );
+    MutexGuard          aGuard( m_aMutex );
     if( SvXMLEmbeddedObjectHelperMode::Read == meCreateMode )
     {
         return true;
@@ -694,7 +694,7 @@ sal_Bool SAL_CALL SvXMLEmbeddedObjectHelper::hasByName( 
const OUString& rURLStr
 // XNameAccess
 Type SAL_CALL SvXMLEmbeddedObjectHelper::getElementType()
 {
-    MutexGuard          aGuard( maMutex );
+    MutexGuard          aGuard( m_aMutex );
     if( SvXMLEmbeddedObjectHelperMode::Read == meCreateMode )
         return cppu::UnoType<XOutputStream>::get();
     else
@@ -703,7 +703,7 @@ Type SAL_CALL SvXMLEmbeddedObjectHelper::getElementType()
 
 sal_Bool SAL_CALL SvXMLEmbeddedObjectHelper::hasElements()
 {
-    MutexGuard          aGuard( maMutex );
+    MutexGuard          aGuard( m_aMutex );
     if( SvXMLEmbeddedObjectHelperMode::Read == meCreateMode )
     {
         return true;

Reply via email to