Core/Players: Fixed crashes with char enum packet if equipment cache field does not have correct format
This commit is contained in:
@@ -141,9 +141,11 @@ EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields)
|
||||
|
||||
LastLoginVersion = fields[22].GetUInt32();
|
||||
|
||||
for (uint8 slot = 0; slot < REAGENT_BAG_SLOT_END; ++slot)
|
||||
constexpr std::size_t equipmentFieldsPerSlot = 5;
|
||||
|
||||
for (std::size_t slot = 0; slot < VisualItems.size() && (slot + 1) * equipmentFieldsPerSlot <= equipment.size(); ++slot)
|
||||
{
|
||||
uint32 visualBase = slot * 5;
|
||||
std::size_t visualBase = slot * equipmentFieldsPerSlot;
|
||||
VisualItems[slot].InvType = Trinity::StringTo<uint8>(equipment[visualBase + 0]).value_or(0);
|
||||
VisualItems[slot].DisplayID = Trinity::StringTo<uint32>(equipment[visualBase + 1]).value_or(0);
|
||||
VisualItems[slot].DisplayEnchantID = Trinity::StringTo<uint32>(equipment[visualBase + 2]).value_or(0);
|
||||
|
||||
Reference in New Issue
Block a user