patches: fix 2 blockers from Opus review
BLOCKER #1: accessibilityUpdating flag exception safety. A Lisp signal (longjmp) during postAccessibilityUpdates left the re-entrance flag permanently YES, suppressing all future AX notifications → VoiceOver goes silent randomly. Fix: specpdl unwind protection (record_unwind_protect_ptr) resets the flag on any longjmp. All 3 exit points use unbind_to. BLOCKER #2: static struct buffer *lastBuffer dangling pointer. Raw C pointer to buffer struct has no GC protection. After kill-buffer, the pointer dangles. Fix: file-scope Lisp_Object lastChildFrameBuffer with staticpro. EQ comparison instead of pointer equality. Also: revert accidental em-dash → triple-dash in title bar (0007), fix README factual error (BUF_OVERLAY_MODIFF cache key).
This commit is contained in:
@@ -92,7 +92,9 @@ ARCHITECTURE
|
||||
text range, line/index/range conversions, frame-for-range,
|
||||
range-for-position, and insertion-point-line-number.
|
||||
- Maintains a text cache (cachedText / visibleRuns) keyed on
|
||||
BUF_MODIFF, BUF_OVERLAY_MODIFF, and BUF_BEGV (narrowing).
|
||||
BUF_MODIFF and BUF_BEGV (narrowing). BUF_OVERLAY_MODIFF is
|
||||
tracked separately for notification dispatch (patch 0007)
|
||||
but not for cache invalidation.
|
||||
The cache is the single source of truth for all
|
||||
index-to-charpos and charpos-to-index mappings.
|
||||
- Detects buffer edits (modiff change), cursor movement (point
|
||||
|
||||
Reference in New Issue
Block a user