[Crash] Resolve crash when assigning empty raid note. (#3628)

* [Crash] Resolve crash when assigning empty raid note.

* const
This commit is contained in:
Aeadoin 2023-10-15 16:42:12 -04:00 committed by GitHub
parent 16ab1839e8
commit c203fec9b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1707,34 +1707,31 @@ bool Raid::LearnMembers()
{ {
memset(members, 0, (sizeof(RaidMember) * MAX_RAID_MEMBERS)); memset(members, 0, (sizeof(RaidMember) * MAX_RAID_MEMBERS));
const auto query = fmt::format( auto raid_members = RaidMembersRepository::GetWhere(
"SELECT name, groupid, _class, level, " content_db,
"isgroupleader, israidleader, islooter, is_marker, is_assister, bot_id, note " fmt::format(
"FROM raid_members WHERE raidid = {} ORDER BY groupid", "raidid = {}",
GetID() GetID()
)
); );
auto results = database.QueryDatabase(query); if (raid_members.empty()) {
if (!results.Success()) {
return false;
}
if (!results.RowCount()) {
disbandCheck = true; disbandCheck = true;
return false; return false;
} }
int i = 0; int i = 0;
for (auto row: results) { for (const auto &e: raid_members) {
if (!row[0]) { if (e.name.empty()) {
continue; continue;
} }
members[i].member = nullptr; members[i].member = nullptr;
strn0cpy(members[i].member_name, row[0], sizeof(members[i].member_name)); strn0cpy(members[i].member_name, e.name.c_str(), sizeof(members[i].member_name));
// strn0cpy(members[i].note, row[10], sizeof(members[i].note)); uint32 group_id = e.groupid;
members[i].note = std::string(row[10]); if (!e.note.empty()) {
uint32 group_id = Strings::ToUnsignedInt(row[1]); members[i].note = e.note;
}
if (group_id >= MAX_RAID_GROUPS) { if (group_id >= MAX_RAID_GROUPS) {
members[i].group_number = RAID_GROUPLESS; members[i].group_number = RAID_GROUPLESS;
@ -1743,14 +1740,14 @@ bool Raid::LearnMembers()
members[i].group_number = group_id; members[i].group_number = group_id;
} }
members[i]._class = Strings::ToUnsignedInt(row[2]); members[i]._class = e._class;
members[i].level = Strings::ToUnsignedInt(row[3]); members[i].level = e.level;
members[i].is_group_leader = Strings::ToBool(row[4]); members[i].is_group_leader = e.isgroupleader;
members[i].is_raid_leader = Strings::ToBool(row[5]); members[i].is_raid_leader = e.israidleader;
members[i].is_looter = Strings::ToBool(row[6]); members[i].is_looter = e.islooter;
members[i].main_marker = Strings::ToUnsignedInt(row[7]); members[i].main_marker = e.is_marker;
members[i].main_assister = Strings::ToUnsignedInt(row[8]); members[i].main_assister = e.is_assister;
members[i].is_bot = Strings::ToBool(row[9]) > 0; members[i].is_bot = e.bot_id > 0;
++i; ++i;
} }
return true; return true;