docs: client bug report — GameTooltipMods nil lineText (MultiCast totem tooltip crash)
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# CoA client bug — GameTooltipMods.lua nil `lineText` in ModTooltipSetSpell
|
||||
|
||||
**Component:** CoA/Ascension client FrameXML mod (shipped in `Data/patch-B.MPQ` →
|
||||
`Interface\FrameXML\GameTooltipMods.lua`). NOT an addon — this is the client.
|
||||
|
||||
**Realm seen:** Vol'jin — CoA Beta. Reproduces on a custom-class character (e.g.
|
||||
Guardian) by **hovering a MultiCast totem / standard action button** with any
|
||||
tooltip-embedding addon active (TradeSkillMaster's LibExtraTip in our case, but
|
||||
any addon that re-fires the tooltip triggers it).
|
||||
|
||||
## Error
|
||||
|
||||
```
|
||||
Interface\FrameXML\GameTooltipMods.lua:109: attempt to index local 'lineText' (a nil value)
|
||||
GameTooltipMods.lua:109: in function `func'
|
||||
GameTooltip.lua:361 ... LibExtraTip ... SetAction
|
||||
ActionButton.lua:514 ActionButton_SetTooltip
|
||||
MultiCastActionBarFrame.lua:462 MultiCastActionButton_OnEnter
|
||||
spellName = "Standard of Recovery", spellID = 500260, line index i = 4
|
||||
```
|
||||
|
||||
## Cause
|
||||
|
||||
`ModTooltipSetSpell:EmbedSpell` (and the custom-class totem block lower in the
|
||||
file) call `left:GetText()` and immediately index the result with no nil guard:
|
||||
|
||||
```lua
|
||||
function ModTooltipSetSpell:EmbedSpell(left, right, spellID)
|
||||
local lineText = left:GetText()
|
||||
if lineText:find("%b@@") then -- line 109: lineText can be nil
|
||||
```
|
||||
|
||||
`GameTooltipTextLeftN` regions exist but return `nil` from `GetText()` when the
|
||||
line is empty (common on multi-line spell tooltips like totem/standard buttons —
|
||||
here line 4 is blank). The sibling `ModTooltipSetItem:DoCustomFormatters` in the
|
||||
**same file** already guards correctly:
|
||||
|
||||
```lua
|
||||
function ModTooltipSetItem:DoCustomFormatters(left)
|
||||
if not left:GetFont() or not left:GetText() or not left:GetText():find("%b@@") then return end
|
||||
```
|
||||
|
||||
`ModTooltipSetSpell:EmbedSpell` just needs the same guard.
|
||||
|
||||
## Fix (one line each)
|
||||
|
||||
`ModTooltipSetSpell:EmbedSpell` — add at the top of the function:
|
||||
|
||||
```lua
|
||||
function ModTooltipSetSpell:EmbedSpell(left, right, spellID)
|
||||
local lineText = left:GetText()
|
||||
if not lineText then return end -- <-- add
|
||||
if lineText:find("%b@@") then
|
||||
...
|
||||
```
|
||||
|
||||
And the custom-class totem block lower down (the second
|
||||
`local lineText = left:GetText()` followed by `lineText:startswith(SPELL_TOTEMS)`)
|
||||
needs the same `if not lineText then return end` / `if lineText and ...` guard —
|
||||
it has the identical latent nil-deref.
|
||||
|
||||
No addon-side fix is possible; the crash is in client FrameXML. Reported by
|
||||
Sub-Net (Exiles guild) from the coa-* addon-porting work.
|
||||
Reference in New Issue
Block a user