v13 patch: fix MRC retain/release for accessibilityElements array
- arrayWithCapacity: returns autorelease object, must retain for ivar - Release old array before reassigning in rebuildAccessibilityTree - Release in EmacsView dealloc - Fixes crash: _NSPasteboardTypeCache countByEnumeratingWithState (dangling pointer)
This commit is contained in:
@@ -12,6 +12,7 @@ New classes:
|
|||||||
|
|
||||||
EmacsView becomes an AXGroup containing EmacsAccessibilityBuffer children.
|
EmacsView becomes an AXGroup containing EmacsAccessibilityBuffer children.
|
||||||
Notification hooks fire on cursor movement, text edits, and window changes.
|
Notification hooks fire on cursor movement, text edits, and window changes.
|
||||||
|
Uses unsafe_unretained references (MRC compatible) and proper retain/release.
|
||||||
---
|
---
|
||||||
--- a/src/nsterm.h 2026-02-26 08:46:18.118172281 +0100
|
--- a/src/nsterm.h 2026-02-26 08:46:18.118172281 +0100
|
||||||
+++ b/src/nsterm.h 2026-02-26 08:46:06.891980688 +0100
|
+++ b/src/nsterm.h 2026-02-26 08:46:06.891980688 +0100
|
||||||
@@ -73,7 +74,7 @@ Notification hooks fire on cursor movement, text edits, and window changes.
|
|||||||
|
|
||||||
|
|
||||||
--- a/src/nsterm.m 2026-02-26 08:46:18.124172384 +0100
|
--- a/src/nsterm.m 2026-02-26 08:46:18.124172384 +0100
|
||||||
+++ b/src/nsterm.m 2026-02-26 08:46:06.895980756 +0100
|
+++ b/src/nsterm.m 2026-02-26 08:52:18.397374436 +0100
|
||||||
@@ -1104,6 +1104,11 @@
|
@@ -1104,6 +1104,11 @@
|
||||||
|
|
||||||
unblock_input ();
|
unblock_input ();
|
||||||
@@ -697,7 +698,15 @@ Notification hooks fire on cursor movement, text edits, and window changes.
|
|||||||
EmacsView implementation
|
EmacsView implementation
|
||||||
|
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
@@ -9474,6 +10083,143 @@
|
@@ -6889,6 +7498,7 @@
|
||||||
|
[layer release];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ [accessibilityElements release];
|
||||||
|
[[self menu] release];
|
||||||
|
[super dealloc];
|
||||||
|
}
|
||||||
|
@@ -9474,6 +10084,144 @@
|
||||||
return fs_state;
|
return fs_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -753,7 +762,8 @@ Notification hooks fire on cursor movement, text edits, and window changes.
|
|||||||
+ NSMutableArray *newElements = [NSMutableArray arrayWithCapacity:4];
|
+ NSMutableArray *newElements = [NSMutableArray arrayWithCapacity:4];
|
||||||
+ Lisp_Object root = FRAME_ROOT_WINDOW (emacsframe);
|
+ Lisp_Object root = FRAME_ROOT_WINDOW (emacsframe);
|
||||||
+ ns_ax_collect_windows (root, self, newElements);
|
+ ns_ax_collect_windows (root, self, newElements);
|
||||||
+ accessibilityElements = newElements;
|
+ [accessibilityElements release];
|
||||||
|
+ accessibilityElements = [newElements retain];
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+- (NSAccessibilityRole)accessibilityRole
|
+- (NSAccessibilityRole)accessibilityRole
|
||||||
@@ -841,7 +851,7 @@ Notification hooks fire on cursor movement, text edits, and window changes.
|
|||||||
@end /* EmacsView */
|
@end /* EmacsView */
|
||||||
|
|
||||||
|
|
||||||
@@ -9941,6 +10687,14 @@
|
@@ -9941,6 +10689,14 @@
|
||||||
|
|
||||||
return [super accessibilityAttributeValue:attribute];
|
return [super accessibilityAttributeValue:attribute];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user