Added check for logged out client to prevent erase on erased pointer

This commit is contained in:
Cekis
2021-11-26 15:51:24 -05:00
parent 60e4f7f856
commit 66dc49f7df
2 changed files with 2 additions and 1 deletions

View File

@@ -38,7 +38,7 @@ public:
auto remove_iter
= std::remove_if(std::begin(clients_), std::end(clients_), [](auto& client) {
return client->GetConnection()->GetStatus() == UdpConnection::cStatusDisconnected;
return client->GetConnection()->GetStatus() == UdpConnection::cStatusDisconnected || client == std::end(clients_);
});
if (remove_iter != std::end(clients_))

View File

@@ -72,6 +72,7 @@ void ChatAvatarService::LoginAvatar(ChatAvatar* avatar) {
}
void ChatAvatarService::LogoutAvatar(ChatAvatar* avatar) {
if(!avatar->isOnline_) return;
avatar->isOnline_ = false;
onlineAvatars_.erase(std::remove_if(