diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-06-16 16:52:55 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-06-16 17:09:55 +0100 |
commit | e841ed93d6c6d817be1f7fdc18ff971325c861cc (patch) | |
tree | c775549661ead5de870b11912a94500adab1a4b1 /svx | |
parent | ee24e7f2b689bf0f63ba618fc7ee7ac6bc644172 (diff) |
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
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/fmcomp/gridctrl.cxx | 3 | ||||
-rw-r--r-- | svx/source/form/fmtools.cxx | 7 |
2 files changed, 2 insertions, 8 deletions
diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx index a6043a6a91c6..cb6b42a07a3a 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 4eb8d38fc2c7..6b1301b5e742 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() { } |