Not related to the bug, but:
Code:
local Player = GetRaidRosterInfo(Index)
print('>', Player, Player == nil)
if Player and Player ~= '' then
Player = Ambiguate(GetRaidRosterInfo(Index), 'none')
Why call
GetRaidRosterInfo(Index) a second time on the last line, when you already called it and stored its value in the
Player variable on the first line? Just do
Player = Ambiguate(Player, 'none') there.