diff options
-rw-r--r-- | vcl/aqua/source/a11y/aqua11ywrapper.mm | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/vcl/aqua/source/a11y/aqua11ywrapper.mm b/vcl/aqua/source/a11y/aqua11ywrapper.mm index 8acb5f41a73e..1491a04f5045 100644 --- a/vcl/aqua/source/a11y/aqua11ywrapper.mm +++ b/vcl/aqua/source/a11y/aqua11ywrapper.mm @@ -369,12 +369,16 @@ static BOOL isPopupMenuOpen = NO; -(id)windowAttribute { // go upstairs until reaching the broken connection AquaA11yWrapper * aWrapper = self; + int loops = 0; while ( [ aWrapper accessibleContext ] -> getAccessibleParent().is() ) { AquaA11yWrapper *aTentativeParentWrapper = [ AquaA11yFactory wrapperForAccessibleContext: [ aWrapper accessibleContext ] -> getAccessibleParent() -> getAccessibleContext() ]; // Quick-and-dirty fix for infinite loop after fixing crash in // fdo#47275 if ( aTentativeParentWrapper == aWrapper ) break; + // Even dirtier fix for infinite loop in fdo#55156 + if ( loops++ == 100 ) + break; aWrapper = aTentativeParentWrapper; [ aWrapper autorelease ]; } |