accessibility/inc/extended/AccessibleBrowseBox.hxx |   18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

New commits:
commit 67158da00e965c90495bb4f339ea25bbec898c60
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Oct 4 14:22:22 2024 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Fri Oct 4 20:30:27 2024 +0200

    cid#1608061 Data race condition
    
    and
    
    cid#1607995 Data race condition
    
    Change-Id: I18914bd2e70b60c6aa8b34435677f0278367b722
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174485
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/accessibility/inc/extended/AccessibleBrowseBox.hxx 
b/accessibility/inc/extended/AccessibleBrowseBox.hxx
index a81ace673c88..50486973d4cd 100644
--- a/accessibility/inc/extended/AccessibleBrowseBox.hxx
+++ b/accessibility/inc/extended/AccessibleBrowseBox.hxx
@@ -194,7 +194,7 @@ private:
 class AccessibleBrowseBoxAccess final : public ::vcl::IAccessibleBrowseBox
 {
 private:
-    std::mutex                          m_aMutex;
+    mutable std::mutex                  m_aMutex;
     css::uno::Reference< css::accessibility::XAccessible >
                                         m_xParent;
     ::vcl::IAccessibleTableProvider&    m_rBrowseBox;
@@ -218,39 +218,39 @@ private:
     void dispose() override;
     virtual bool isAlive() const override
     {
+        std::unique_lock aGuard(m_aMutex);
         return m_xContext.is() && m_xContext->isAlive();
     }
     virtual css::uno::Reference< css::accessibility::XAccessible >
         getHeaderBar( AccessibleBrowseBoxObjType _eObjType ) override
     {
-        css::uno::Reference< css::accessibility::XAccessible > xAccessible;
-        if (m_xContext)
-            xAccessible = m_xContext->getHeaderBar( _eObjType );
-        return xAccessible;
+        std::unique_lock aGuard(m_aMutex);
+        return m_xContext ? m_xContext->getHeaderBar(_eObjType) : nullptr;
     }
     virtual css::uno::Reference< css::accessibility::XAccessible >
         getTable() override
     {
-        css::uno::Reference< css::accessibility::XAccessible > xAccessible;
-        if (m_xContext)
-            xAccessible = m_xContext->getTable();
-        return xAccessible;
+        std::unique_lock aGuard(m_aMutex);
+        return m_xContext ? m_xContext->getTable() : nullptr;
     }
     virtual void commitHeaderBarEvent( sal_Int16 nEventId, const 
css::uno::Any& rNewValue,
         const css::uno::Any& rOldValue, bool _bColumnHeaderBar ) override
     {
+        std::unique_lock aGuard(m_aMutex);
         if (m_xContext)
             m_xContext->commitHeaderBarEvent( nEventId, rNewValue, rOldValue, 
_bColumnHeaderBar );
     }
     virtual void commitTableEvent( sal_Int16 nEventId,
         const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) 
override
     {
+        std::unique_lock aGuard(m_aMutex);
         if (m_xContext)
             m_xContext->commitTableEvent( nEventId, rNewValue, rOldValue );
     }
     virtual void commitEvent( sal_Int16 nEventId,
         const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) 
override
     {
+        std::unique_lock aGuard(m_aMutex);
         if (m_xContext)
             m_xContext->commitEvent( nEventId, rNewValue, rOldValue );
     }

Reply via email to