fix(leaks): the compass keeps its marks - two lists swapped a frame, a pool of marks reused

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-27 23:55:07 +03:00
parent 231715bf98
commit bd998748ee
2 changed files with 33 additions and 5 deletions

View file

@ -25,6 +25,9 @@ export open registry CompassProviders of CompassProvider as COMPASS_FROM
export state CompassState {
cmp_cap: int = 64
cmp_list: []CompassMark = null # this frame's, sorted and culled
cmp_back: []CompassMark = null # the list the sort fills, then swapped with cmp_list
cmp_pool: []CompassMark = null # a frame's marks, reused: Ludic frees nothing
cmp_used: int = 0
cmp_capturing: bool = false
cmp_caught: []CompassMark = null # what providers said while someone was listening
cmp_ranges: []float = null