mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-01 19:30:00 +00:00
Every aura scan loop (unit frame buffs/debuffs, dispel indicators, buff and custom indicators, player buff frame, buffwatch bars, tooltip buff row) now enumerates a unit's auras once with C_UnitAuras.GetAuraSlots and reads each aura by slot id via the positional C_UnitAuras.UnitAuraBySlot. The by-index getters re-walk the aura array from slot 0 on every call, so a per-button loop over them was quadratic in the aura count; one enumeration plus a by-slot read per aura is linear. pfUI.api.ScanAuraSlots(unit, filter, buf, max) wraps GetAuraSlots' fill-a- table form (table as the 5th argument) so no vararg Lua frame is involved: Lua 5.0 allocates an `arg` table for every vararg call, which showed up as nameplate OnUpdate/OnEvent memory growth in the first cut of this change. Single by-index reads in tooltip and click handlers are unchanged (one call each, and SetUnitAura takes the same index). Requires the ClassicAPI build that adds GetAuraSlots' fill form; on an older DLL the 5th argument is ignored and ScanAuraSlots would read the first slot id as the count.