Looks like that if you call some API functions many times in a single game frame the returned string is truncated or corrupted. Note that this won't apply to most addons since you need to call functions many 1000s of times within a single frame to start to see this issue. It is a new issue, however, since there have been no issues like this in previous live or PTS versions.
Very simple function to replicate with the GetAbilityDescription() function call:
function TestSkillDesc(abilityId, maxCount)
maxCount = maxCount or 20000
abilityId = abilityId or 20328
local firstDesc = GetAbilityDescription(abilityId, 1)
local desc
d("Testing description of ability "..tostring(abilityId).." with "..tostring(#firstDesc).." characters times...")
for i = 1, maxCount do
desc = GetAbilityDescription(abilityId, 1)
if (desc ~= firstDesc) then
d(""..tostring(i)..") Description mismatch")
d("Orig Desc:"..tostring(firstDesc))
d("Last Desc:"..tostring(desc))
return false
end
end
return true
end
The code just gets the same ability description over and over until the description changes.
/script TestSkillDesc(20328)
/script TestSkillDesc(20657)
/script TestSkillDesc(32947)
You may need to increase the first number parameter before you see the problem. It seems to be related to the length of the returned string. In my tests the string would get truncated/corrupted at around 2.6 million total characters returned. I'm assuming there's a global string buffer that gets overflowed by calling the function so many times within a single frame. Either the buffer was shortened significantly this PTS patch or changed somehow to introduce this effect.
For now I can work around it by limiting the number of API calls done within a single frame although the dynamic nature of the bug makes it harder to avoid.
Reorx Holybeard -- NA/PC
Founder/Admin of
www.uesp.net --
UESP ESO Guilds
Creator of the "Best"
ESO Build Editor
I'm on a quest to build the
world's toughest USB drive!