[Libreoffice-commits] core.git: include/svx svx/source
Caolán McNamara
caolanm at redhat.com
Thu Jun 16 16:10:25 UTC 2016
include/svx/fmtools.hxx | 3 +--
svx/source/fmcomp/gridctrl.cxx | 3 +--
svx/source/form/fmtools.cxx | 7 +------
3 files changed, 3 insertions(+), 10 deletions(-)
New commits:
commit e841ed93d6c6d817be1f7fdc18ff971325c861cc
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Jun 16 16:52:55 2016 +0100
Resolves: tdf#82532 parent mutex dtored before child dtor uses it
Mutex belonged to DisposeListenerGridBridge which inherits from
FmXDisposeListener, FmXDisposeListener dtor accesses a reference
to the parent mutex in its dtor, but the mutex has been destroyed
at this point.
Move the mutex from parent to child. FWIW these classes are on
the candidate list to merge.
Change-Id: Ic639eaed97c2b0625c368ed249f09920af37f94e
diff --git a/include/svx/fmtools.hxx b/include/svx/fmtools.hxx
index e122243..34dec03 100644
--- a/include/svx/fmtools.hxx
+++ b/include/svx/fmtools.hxx
@@ -158,10 +158,9 @@ class SAL_WARN_UNUSED FmXDisposeListener
friend class FmXDisposeMultiplexer;
rtl::Reference<FmXDisposeMultiplexer> m_pAdapter;
- ::osl::Mutex& m_rMutex;
+ osl::Mutex m_aMutex;
public:
- FmXDisposeListener(::osl::Mutex& _rMutex) : m_rMutex(_rMutex) { }
virtual ~FmXDisposeListener();
virtual void disposing(const css::lang::EventObject& _rEvent, sal_Int16 _nId) throw( css::uno::RuntimeException ) = 0;
diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx
index a6043a6..cb6b42a 100644
--- a/svx/source/fmcomp/gridctrl.cxx
+++ b/svx/source/fmcomp/gridctrl.cxx
@@ -192,7 +192,6 @@ void GridFieldValueListener::dispose()
class DisposeListenerGridBridge : public FmXDisposeListener
{
- osl::Mutex m_aMutex;
DbGridControl& m_rParent;
rtl::Reference<FmXDisposeMultiplexer> m_xRealListener;
@@ -204,7 +203,7 @@ public:
};
DisposeListenerGridBridge::DisposeListenerGridBridge(DbGridControl& _rParent, const Reference< XComponent >& _rxObject)
- :FmXDisposeListener(m_aMutex)
+ :FmXDisposeListener()
,m_rParent(_rParent)
{
diff --git a/svx/source/form/fmtools.cxx b/svx/source/form/fmtools.cxx
index 4eb8d38..6b1301b 100644
--- a/svx/source/form/fmtools.cxx
+++ b/svx/source/form/fmtools.cxx
@@ -259,7 +259,6 @@ void CursorWrapper::ImplConstruct(const Reference< css::sdbc::XResultSet>& _rxCu
m_xGeneric = m_xMoveOperations.get();
}
-
CursorWrapper& CursorWrapper::operator=(const Reference< css::sdbc::XRowSet>& _rxCursor)
{
m_xMoveOperations.set(_rxCursor, UNO_QUERY);
@@ -274,20 +273,17 @@ CursorWrapper& CursorWrapper::operator=(const Reference< css::sdbc::XRowSet>& _r
return *this;
}
-
FmXDisposeListener::~FmXDisposeListener()
{
setAdapter(nullptr);
}
-
void FmXDisposeListener::setAdapter(FmXDisposeMultiplexer* pAdapter)
{
- ::osl::MutexGuard aGuard(m_rMutex);
+ ::osl::MutexGuard aGuard(m_aMutex);
m_pAdapter = pAdapter;
}
-
FmXDisposeMultiplexer::FmXDisposeMultiplexer(FmXDisposeListener* _pListener, const Reference< css::lang::XComponent>& _rxObject)
:m_xObject(_rxObject)
,m_pListener(_pListener)
@@ -299,7 +295,6 @@ FmXDisposeMultiplexer::FmXDisposeMultiplexer(FmXDisposeListener* _pListener, con
m_xObject->addEventListener(this);
}
-
FmXDisposeMultiplexer::~FmXDisposeMultiplexer()
{
}
More information about the Libreoffice-commits
mailing list