vcl/osx/a11ywrapper.mm |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

New commits:
commit 1bf7da609848652ad99d9bde844b90d37de80ffa
Author:     Patrick Luby <plub...@neooffice.org>
AuthorDate: Sun May 28 17:37:46 2023 -0300
Commit:     Patrick Luby <plub...@neooffice.org>
CommitDate: Mon May 29 00:24:26 2023 +0200

    Partial fix tdf#146626 Catch uncaught DisposedException
    
    Fix crash due to an uncaught DisposedException thrown by
    SwAccessibleParagraph::getTextRange() by using the same try/catch
    block in -[A11yWrapper accessibilityAttributeValue:] in
    -[A11yWrapper accessibilityAttributeValue:forParameter].
    
    Change-Id: Ifcaec3eb2d76f32bddc56a1242f6d86f8b90f782
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152361
    Tested-by: Jenkins
    Reviewed-by: Patrick Luby <plub...@neooffice.org>
    (cherry picked from commit f8cc6f960e8aeb37547d447fed2b2c6e6ddc02e3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152317

diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm
index c4beeb5b0567..cb6fca0a9e29 100644
--- a/vcl/osx/a11ywrapper.mm
+++ b/vcl/osx/a11ywrapper.mm
@@ -870,7 +870,15 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityAttributeValue:" << 
attribute << " forParameter:" << (static_cast<NSObject*>(parameter)) << "]");
     SEL methodSelector = [ self selectorForAttribute: attribute asGetter: YES 
withGetterParameter: YES ];
     if ( [ self respondsToSelector: methodSelector ] ) {
-        return [ self performSelector: methodSelector withObject: parameter ];
+        try {
+            return [ self performSelector: methodSelector withObject: 
parameter ];
+        } catch ( const DisposedException & ) {
+            mIsTableCell = NO; // just to be sure
+            [ AquaA11yFactory removeFromWrapperRepositoryFor: [ self 
accessibleContext ] ];
+            return nil;
+        } catch ( const Exception & ) {
+            // empty
+        }
     }
     return nil; // TODO: to be completed
 }

Reply via email to