vcl/osx/a11ytextattributeswrapper.mm |    6 +++++-
 vcl/osx/a11ywrapper.mm               |   33 +++++++++++++++++++++++++++++++++
 vcl/osx/a11ywrapperbutton.mm         |    4 ++++
 vcl/osx/a11ywrappercheckbox.mm       |    7 +++++++
 vcl/osx/a11ywrappercombobox.mm       |   10 ++++++++++
 vcl/osx/a11ywrappergroup.mm          |    4 ++++
 vcl/osx/a11ywrapperlist.mm           |    4 ++++
 vcl/osx/a11ywrapperradiobutton.mm    |    7 +++++++
 vcl/osx/a11ywrapperradiogroup.mm     |    4 ++++
 vcl/osx/a11ywrapperrow.mm            |    4 ++++
 vcl/osx/a11ywrapperscrollarea.mm     |    4 ++++
 vcl/osx/a11ywrapperscrollbar.mm      |    4 ++++
 vcl/osx/a11ywrappersplitter.mm       |    4 ++++
 vcl/osx/a11ywrapperstatictext.mm     |    4 ++++
 vcl/osx/a11ywrappertabgroup.mm       |    4 ++++
 vcl/osx/a11ywrappertextarea.mm       |    4 ++++
 vcl/osx/a11ywrappertoolbar.mm        |    4 ++++
 17 files changed, 110 insertions(+), 1 deletion(-)

New commits:
commit de1d75a0cd25f239cdc751dec75c9019fbcabd8e
Author:     Patrick Luby <plub...@neooffice.org>
AuthorDate: Tue Jan 17 09:51:10 2023 -0500
Commit:     Patrick Luby <plub...@neooffice.org>
CommitDate: Fri Jan 20 19:36:14 2023 +0000

    tdf#148453 Fix crash by turning off optimization for Objective-C selector
    
    The default attributes sequence sometimes crashes when it is released but
    only when compiler optimization is enabled, so disable optimization for the
    +[AquaA11yTextAttributesWrapper createAttributedStringForElement] selector.
    
    Also, disabling optimization by itself is apparently not enough to stop
    the crashing. Acquiring the solar mutex during native accessibility calls
    is also needed. Native accessibility calls are called from native input
    sources in [NSApp nextEventMatchingMask:untilDate:inMode:dequeue:]. Since
    AquaSalInstance::DoYield() releases the solar mutex before calling
    [NSApp nextEventMatchingMask:untilDate:inMode:dequeue:], we need to
    always acquire the solar mutex during all NSAccessibility selectors (both
    the old informal protocol and the newer formal protocol) that we implement.
    
    Change-Id: I9b715e17e9c5a32b7ce28815e288b2af236c3cc6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145742
    Tested-by: Jenkins
    Reviewed-by: Patrick Luby <plub...@neooffice.org>

diff --git a/vcl/osx/a11ytextattributeswrapper.mm 
b/vcl/osx/a11ytextattributeswrapper.mm
index 84a9b27e54cc..9db1ba91307d 100644
--- a/vcl/osx/a11ytextattributeswrapper.mm
+++ b/vcl/osx/a11ytextattributeswrapper.mm
@@ -300,7 +300,11 @@ using namespace ::com::sun::star::uno;
     [AquaA11yTextAttributesWrapper addMarkup:markup 
withType:css::text::TextMarkupType::SPELLCHECK toString:string inRange:range];
 }
 
-+(NSMutableAttributedString 
*)createAttributedStringForElement:(AquaA11yWrapper *)wrapper 
inOrigRange:(id)origRange {
+// tdf#148453 Fix crash by turning off optimization for Objective-C selector
+// The default attributes sequence sometimes crashes when it is released but
+// only when compiler optimization is enabled, so disable optimization for the
+// +[AquaA11yTextAttributesWrapper createAttributedStringForElement] selector.
++(NSMutableAttributedString 
*)createAttributedStringForElement:(AquaA11yWrapper *)wrapper 
inOrigRange:(id)origRange __attribute__((optnone)) {
     static const Sequence < OUString > emptySequence;
     // vars
     NSMutableAttributedString * string = nil;
diff --git a/vcl/osx/a11ywrapper.mm b/vcl/osx/a11ywrapper.mm
index beb40f8851b3..73abb6050733 100644
--- a/vcl/osx/a11ywrapper.mm
+++ b/vcl/osx/a11ywrapper.mm
@@ -682,6 +682,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 #pragma mark Accessibility Protocol
 
 -(id)accessibilityAttributeValue:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityAttributeValue:" << 
attribute << "]");
     // #i90575# guard NSAccessibility protocol against unwanted access
     if ( isPopupMenuOpen ) {
@@ -712,6 +715,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(BOOL)accessibilityIsIgnored {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityIsIgnored]");
     // #i90575# guard NSAccessibility protocol against unwanted access
     if ( isPopupMenuOpen ) {
@@ -736,6 +742,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityAttributeNames]");
     // #i90575# guard NSAccessibility protocol against unwanted access
     if ( isPopupMenuOpen ) {
@@ -817,6 +826,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityAttributeIsSettable:" 
<< attribute << "]");
     bool isSettable = false;
     if ( [ self accessibleText ] ) {
@@ -835,6 +847,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(NSArray *)accessibilityParameterizedAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " 
accessibilityParameterizedAttributeNames]");
     NSMutableArray * attributeNames = [ [ NSMutableArray alloc ] init ];
     // Special Attributes depending on interface
@@ -845,6 +860,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(id)accessibilityAttributeValue:(NSString *)attribute 
forParameter:(id)parameter {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     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 ] ) {
@@ -860,6 +878,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilitySetValue:" << 
(static_cast<NSObject*>(value)) << " forAttribute:" << attribute << "]");
     SEL methodSelector = [ self selectorForAttribute: attribute asGetter: NO 
withGetterParameter: NO ];
     if ( [ AquaA11yComponentWrapper respondsToSelector: methodSelector ] ) {
@@ -877,6 +898,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(id)accessibilityFocusedUIElement {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityFocusedUIElement]");
     // #i90575# guard NSAccessibility protocol against unwanted access
     if ( isPopupMenuOpen ) {
@@ -937,6 +961,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(void)accessibilityPerformAction:(NSString *)action {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityPerformAction:" << 
action << "]");
     AquaA11yWrapper * actionResponder = [ self actionResponder ];
     if ( actionResponder ) {
@@ -945,6 +972,9 @@ static std::ostream &operator<<(std::ostream &s, NSObject 
*obj) {
 }
 
 -(NSArray *)accessibilityActionNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityActionNames]");
     NSArray * actionNames = nil;
     AquaA11yWrapper * actionResponder = [ self actionResponder ];
@@ -1030,6 +1060,9 @@ static Reference < XAccessibleContext > hitTestRunner ( 
css::awt::Point point,
 }
 
 -(id)accessibilityHitTest:(NSPoint)point {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     SAL_INFO("vcl.a11y", "[" << self << " accessibilityHitTest:" << point << 
"]");
     static id wrapper = nil;
     if ( nil != wrapper ) {
diff --git a/vcl/osx/a11ywrapperbutton.mm b/vcl/osx/a11ywrapperbutton.mm
index ca5f16af3d42..a2c0d0398fe9 100644
--- a/vcl/osx/a11ywrapperbutton.mm
+++ b/vcl/osx/a11ywrapperbutton.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrapperbutton.h"
@@ -36,6 +37,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappercheckbox.mm b/vcl/osx/a11ywrappercheckbox.mm
index d67c5b610ded..9e0f221985c9 100644
--- a/vcl/osx/a11ywrappercheckbox.mm
+++ b/vcl/osx/a11ywrappercheckbox.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrappercheckbox.h"
@@ -36,6 +37,9 @@
 }
 
 -(BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     if ( [ attribute isEqualToString: NSAccessibilityValueAttribute ] ) {
         return NO;
     }
@@ -43,6 +47,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Remove text-specific attributes
diff --git a/vcl/osx/a11ywrappercombobox.mm b/vcl/osx/a11ywrappercombobox.mm
index 962a66914863..bfcef7275e33 100644
--- a/vcl/osx/a11ywrappercombobox.mm
+++ b/vcl/osx/a11ywrappercombobox.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrappercombobox.h"
@@ -110,6 +111,9 @@ using namespace ::com::sun::star::uno;
 #pragma mark Accessibility Protocol
 
 -(BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     if ( [ self textArea ] != nil && (
          [ attribute isEqualToString: NSAccessibilitySelectedTextAttribute ]
       || [ attribute isEqualToString: 
NSAccessibilitySelectedTextRangeAttribute ]
@@ -120,6 +124,9 @@ using namespace ::com::sun::star::uno;
 }
 
 -(void)accessibilitySetValue:(id)value forAttribute:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     if ( [ self textArea ] != nil && (
          [ attribute isEqualToString: NSAccessibilitySelectedTextAttribute ]
       || [ attribute isEqualToString: 
NSAccessibilitySelectedTextRangeAttribute ]
@@ -130,6 +137,9 @@ using namespace ::com::sun::star::uno;
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappergroup.mm b/vcl/osx/a11ywrappergroup.mm
index 39cbd9adfcbc..7ed70d47baba 100644
--- a/vcl/osx/a11ywrappergroup.mm
+++ b/vcl/osx/a11ywrappergroup.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrappergroup.h"
 
@@ -30,6 +31,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperlist.mm b/vcl/osx/a11ywrapperlist.mm
index 9b0bac733bf9..25b3fa37ac62 100644
--- a/vcl/osx/a11ywrapperlist.mm
+++ b/vcl/osx/a11ywrapperlist.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrapperlist.h"
 
@@ -28,6 +29,9 @@ using namespace ::com::sun::star::accessibility;
 @implementation AquaA11yWrapperList : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperradiobutton.mm 
b/vcl/osx/a11ywrapperradiobutton.mm
index 21fd9529bb96..5022cc18c22b 100644
--- a/vcl/osx/a11ywrapperradiobutton.mm
+++ b/vcl/osx/a11ywrapperradiobutton.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrapperradiobutton.h"
 #include "a11ytextwrapper.h"
@@ -35,6 +36,9 @@
 }
 
 -(BOOL)accessibilityIsAttributeSettable:(NSString *)attribute {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     if ( [ attribute isEqualToString: NSAccessibilityValueAttribute ] ) {
         return NO;
     }
@@ -42,6 +46,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperradiogroup.mm b/vcl/osx/a11ywrapperradiogroup.mm
index 557e0b1bca15..9768dbbb6988 100644
--- a/vcl/osx/a11ywrapperradiogroup.mm
+++ b/vcl/osx/a11ywrapperradiogroup.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrapperradiogroup.h"
 #include "a11ytextwrapper.h"
@@ -27,6 +28,9 @@
 @implementation AquaA11yWrapperRadioGroup : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperrow.mm b/vcl/osx/a11ywrapperrow.mm
index 1b7ee56dd456..0c140c82c62c 100644
--- a/vcl/osx/a11ywrapperrow.mm
+++ b/vcl/osx/a11ywrapperrow.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrapperrow.h"
@@ -33,6 +34,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperscrollarea.mm b/vcl/osx/a11ywrapperscrollarea.mm
index b0b963a6b403..22037220d409 100644
--- a/vcl/osx/a11ywrapperscrollarea.mm
+++ b/vcl/osx/a11ywrapperscrollarea.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrapperscrollarea.h"
@@ -59,6 +60,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperscrollbar.mm b/vcl/osx/a11ywrapperscrollbar.mm
index a4b7a246b411..4a4612d3bbd0 100644
--- a/vcl/osx/a11ywrapperscrollbar.mm
+++ b/vcl/osx/a11ywrapperscrollbar.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 
 #include "a11ywrapperscrollbar.h"
@@ -31,6 +32,9 @@ using namespace ::com::sun::star::accessibility;
 @implementation AquaA11yWrapperScrollBar : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappersplitter.mm b/vcl/osx/a11ywrappersplitter.mm
index b43928bd43cd..39ec496af2ac 100644
--- a/vcl/osx/a11ywrappersplitter.mm
+++ b/vcl/osx/a11ywrappersplitter.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrappersplitter.h"
 
@@ -28,6 +29,9 @@ using namespace ::com::sun::star::accessibility;
 @implementation AquaA11yWrapperSplitter : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrapperstatictext.mm b/vcl/osx/a11ywrapperstatictext.mm
index cd4728544c00..114c4179e8d6 100644
--- a/vcl/osx/a11ywrapperstatictext.mm
+++ b/vcl/osx/a11ywrapperstatictext.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrapperstatictext.h"
 
@@ -34,6 +35,9 @@
 }
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappertabgroup.mm b/vcl/osx/a11ywrappertabgroup.mm
index ad5971865449..3d32ccc041f0 100644
--- a/vcl/osx/a11ywrappertabgroup.mm
+++ b/vcl/osx/a11ywrappertabgroup.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrappertabgroup.h"
 
@@ -26,6 +27,9 @@
 @implementation AquaA11yWrapperTabGroup : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappertextarea.mm b/vcl/osx/a11ywrappertextarea.mm
index 3f51f3541bd1..354030fb9aef 100644
--- a/vcl/osx/a11ywrappertextarea.mm
+++ b/vcl/osx/a11ywrappertextarea.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrappertextarea.h"
 
@@ -26,6 +27,9 @@
 @implementation AquaA11yWrapperTextArea : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role
diff --git a/vcl/osx/a11ywrappertoolbar.mm b/vcl/osx/a11ywrappertoolbar.mm
index 05e9b30e255e..28b5d01328f0 100644
--- a/vcl/osx/a11ywrappertoolbar.mm
+++ b/vcl/osx/a11ywrappertoolbar.mm
@@ -18,6 +18,7 @@
  */
 
 
+#include <vcl/svapp.hxx>
 #include <osx/salinst.h>
 #include "a11ywrappertoolbar.h"
 
@@ -26,6 +27,9 @@
 @implementation AquaA11yWrapperToolbar : AquaA11yWrapper
 
 -(NSArray *)accessibilityAttributeNames {
+    // Related: tdf#148453 Acquire solar mutex during native accessibility 
calls
+    SolarMutexGuard aGuard;
+
     // Default Attributes
     NSMutableArray * attributeNames = [ NSMutableArray arrayWithArray: [ super 
accessibilityAttributeNames ] ];
     // Special Attributes and removing unwanted attributes depending on role

Reply via email to