diff options
-rw-r--r-- | accessibility/source/standard/vclxaccessibletoolbox.cxx | 11 | ||||
-rw-r--r-- | vcl/source/window/accessibility.cxx | 2 |
2 files changed, 9 insertions, 4 deletions
diff --git a/accessibility/source/standard/vclxaccessibletoolbox.cxx b/accessibility/source/standard/vclxaccessibletoolbox.cxx index 5f5089ab5dbb..1a733a6eeb4f 100644 --- a/accessibility/source/standard/vclxaccessibletoolbox.cxx +++ b/accessibility/source/standard/vclxaccessibletoolbox.cxx @@ -730,9 +730,14 @@ Reference< XAccessible > SAL_CALL VCLXAccessibleToolBox::getAccessibleChild( sal Reference< XAccessible> xParent = pChild; if ( pItemWindow ) { - xChild = new OToolBoxWindowItem(0,::comphelper::getProcessComponentContext(),pItemWindow->GetAccessible(),xParent); - pItemWindow->SetAccessible(xChild); - pChild->SetChild( xChild ); + auto const xInnerAcc(pItemWindow->GetAccessible()); + if (xInnerAcc) // else child is being disposed - avoid crashing + { + xChild = new OToolBoxWindowItem(0, + ::comphelper::getProcessComponentContext(), xInnerAcc, xParent); + pItemWindow->SetAccessible(xChild); + pChild->SetChild( xChild ); + } } xChild = pChild; if ( nHighlightItemId > 0 && nItemId == nHighlightItemId ) diff --git a/vcl/source/window/accessibility.cxx b/vcl/source/window/accessibility.cxx index ef3bf456e7a9..58a2028aa1aa 100644 --- a/vcl/source/window/accessibility.cxx +++ b/vcl/source/window/accessibility.cxx @@ -125,7 +125,7 @@ css::uno::Reference< css::accessibility::XAccessible > Window::GetAccessible( bo */ if ( !mpWindowImpl ) return css::uno::Reference< css::accessibility::XAccessible >(); - if ( !mpWindowImpl->mxAccessible.is() && bCreate ) + if (!mpWindowImpl->mxAccessible.is() && !mpWindowImpl->mbInDispose && bCreate) mpWindowImpl->mxAccessible = CreateAccessible(); return mpWindowImpl->mxAccessible; |