Skip to content

Fix(Action Bars): Lua error during delve vehicle combat from cooldown-event taint - #1975

Open
dfrisone wants to merge 1 commit into
EllesmereGaming:mainfrom
dfrisone:fix/ab-vehicle-cooldown-taint
Open

Fix(Action Bars): Lua error during delve vehicle combat from cooldown-event taint#1975
dfrisone wants to merge 1 commit into
EllesmereGaming:mainfrom
dfrisone:fix/ab-vehicle-cooldown-taint

Conversation

@dfrisone

@dfrisone dfrisone commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Bug: reported via Svart; fix authored by Svart (svart2521) and re-submitted here on his behalf while his GitHub account is suspended.

Issue: a Lua error during vehicle combat in a delve, with the damage spreading past the action bars -- the objective tracker was caught in the same tick. It only reproduced in a vehicle, which is what made it look like a delve-specific problem rather than a cooldown one.

Root cause: EllesmereUIActionBars.lua registered Blizzard's own ActionBarButtonEventsFrame for ACTIONBAR_UPDATE_COOLDOWN and SPELL_UPDATE_COOLDOWN. Registering their shared frame puts our taint on their dispatch, and that dispatch runs ActionButton_UpdateCooldown into SetCooldown -- the same secret-cooldown-under-taint chain already fixed once for our own buttons in QuietlyHideBlizzButton's OnShow hook. Once it fires, the rest of that tick's native call stack is tainted, which is why an unrelated frame like the objective tracker ends up in the error.

Fix: take both events off Blizzard's broadcaster and register them on our own bar frame, repainting the seven Blizzard-owned buttons (OverrideActionBarButton1-6 and ExtraActionButton1) through ForceCooldownPaint, which is already the established secret-safe path. Coverage is unchanged, including the spell-typed delve buttons that carry no action slot and therefore fire SPELL_UPDATE_COOLDOWN rather than the action-bar event, and the repaint returns immediately unless a vehicle or extra-action button is actually up.

…ooldowns

Registering Blizzard's own ActionBarButtonEventsFrame for
ACTIONBAR_UPDATE_COOLDOWN and SPELL_UPDATE_COOLDOWN put our taint on their
dispatch, which runs ActionButton_UpdateCooldown into SetCooldown -- the same
secret-cooldown-under-taint chain already fixed once for our own buttons -- and
left the rest of that tick's native call stack tainted, the objective tracker
included. It reproduced during vehicle combat in a delve.

Both events come off Blizzard's shared broadcaster and go onto our own bar
frame instead, repainting the seven Blizzard-owned buttons through
ForceCooldownPaint, which is already the established secret-safe path. That
keeps the coverage full mode had -- including the spell-typed delve buttons
that carry no action slot and so fire SPELL_UPDATE_COOLDOWN rather than the
action-bar event -- without our taint ever reaching their dispatch. The repaint
returns immediately unless a vehicle or extra-action button is actually up.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant