summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-10-18 11:05:20 +0100
committerMichael Stahl <mstahl@redhat.com>2017-10-19 14:28:13 +0200
commita2cd7c7a1015abe17b46cd40ae4bf5b3296d62e7 (patch)
tree5d158141bd2ea6b5ff5a23d4975368f19f4270db
parent5355e3a4c12e37dd9dba980517645fbc4df5fbf8 (diff)
Resolves: tdf#109282: a11y crash in use after dispose
calc, chart in tab 3 with a11y enabled, select chart switch to tab 1, crash cause mpParent has been deleted, IsDisposed is correctly set, but shape accesses parent anyway Change-Id: I6f57a798bfcc82eebb883291cec54e157ff5187b Reviewed-on: https://gerrit.libreoffice.org/43490 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--svx/source/accessibility/AccessibleShape.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/svx/source/accessibility/AccessibleShape.cxx b/svx/source/accessibility/AccessibleShape.cxx
index de059e9bb7fd..ffc2a6bc5f2e 100644
--- a/svx/source/accessibility/AccessibleShape.cxx
+++ b/svx/source/accessibility/AccessibleShape.cxx
@@ -408,7 +408,9 @@ uno::Reference<XAccessibleStateSet> SAL_CALL
::osl::MutexGuard aGuard (maMutex);
Reference<XAccessibleStateSet> xStateSet;
- if (IsDisposed())
+ bool bDisposed = IsDisposed();
+
+ if (bDisposed)
{
// Return a minimal state set that only contains the DEFUNC state.
xStateSet = AccessibleContextBase::getAccessibleStateSet ();
@@ -459,7 +461,7 @@ uno::Reference<XAccessibleStateSet> SAL_CALL
xStateSet.set( new ::utl::AccessibleStateSetHelper (*pStateSet));
}
}
- if (mpParent && mpParent->IsDocumentSelAll())
+ if (!bDisposed && mpParent && mpParent->IsDocumentSelAll())
{
::utl::AccessibleStateSetHelper* pStateSet =
static_cast< ::utl::AccessibleStateSetHelper*>(xStateSet.get());