diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-12-16 16:09:19 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-12-18 13:00:17 +0100 |
commit | c4b4058b6b3a747b96f72ab44560da11726e4468 (patch) | |
tree | 6494b4a6b32f7477e8b817d77f700ab36475918b /accessibility | |
parent | 2279208fa0570ef5fa2d49c14a721b7d59be069d (diff) |
accessibility: don't crash if the TableControl is dead
AccessibleGridControlAccess: clear the m_pTable member in dispose() so
it is no longer accessed later.
Change-Id: I490c84ce1bee55c9c69eb29b81ddfbe808301797
(cherry picked from commit 449e0c9c7378ba32039bd5934c26011d682a8a91)
Diffstat (limited to 'accessibility')
-rw-r--r-- | accessibility/inc/accessibility/extended/AccessibleGridControl.hxx | 2 | ||||
-rw-r--r-- | accessibility/source/extended/AccessibleGridControl.cxx | 15 |
2 files changed, 10 insertions, 7 deletions
diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx index e92e4953bd56..eb3be3677cf1 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx @@ -196,7 +196,7 @@ private: ::osl::Mutex m_aMutex; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent; - ::svt::table::IAccessibleTable& m_rTable; + ::svt::table::IAccessibleTable * m_pTable; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > m_xContext; diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index df7b8a0a7c65..fcd8dbceefdb 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -407,10 +407,11 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe // ============================================================================ // ----------------------------------------------------------------------------- -AccessibleGridControlAccess::AccessibleGridControlAccess( const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) - :m_xParent( _rxParent ) - ,m_rTable( _rTable ) - ,m_pContext( NULL ) +AccessibleGridControlAccess::AccessibleGridControlAccess( + const Reference< XAccessible >& rxParent, IAccessibleTable& rTable ) + : m_xParent( rxParent ) + , m_pTable( & rTable ) + , m_pContext( 0 ) { } @@ -424,6 +425,7 @@ void AccessibleGridControlAccess::dispose() { ::osl::MutexGuard aGuard( m_aMutex ); + m_pTable = 0; m_pContext = NULL; ::comphelper::disposeComponent( m_xContext ); } @@ -441,8 +443,9 @@ Reference< XAccessibleContext > SAL_CALL AccessibleGridControlAccess::getAccessi if ( m_pContext && !m_pContext->isAlive() ) m_xContext = m_pContext = NULL; - if ( !m_xContext.is() ) - m_xContext = m_pContext = new AccessibleGridControl( m_xParent, this, m_rTable ); + if (!m_xContext.is() && m_pTable) + m_xContext = m_pContext = + new AccessibleGridControl(m_xParent, this, *m_pTable); return m_xContext; } |