summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorBrandon Rothweiler <brandonrothweiler@gmail.com>2019-08-13 18:00:12 -0700
committerBrandon Rothweiler <brandonrothweiler@gmail.com>2019-08-13 18:00:12 -0700
commit8857db98339bbf902cbc95c24822dbe1ce5ffa05 (patch)
tree6d6b5e3ce0d35f500368539d2430efc3d141759b /Source
parentfdfa14d9cc412d6ed8db841136ef62b6b3facb3e (diff)
Check validity of iterator before dereferencing
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/NetPlayClient.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp
index 0d97ec26ab..40b4f1703a 100644
--- a/Source/Core/Core/NetPlayClient.cpp
+++ b/Source/Core/Core/NetPlayClient.cpp
@@ -316,12 +316,15 @@ unsigned int NetPlayClient::OnData(sf::Packet& packet)
PlayerId pid;
packet >> pid;
- INFO_LOG(NETPLAY, "Player %s (%d) left", m_players.find(pid)->second.name.c_str(), pid);
-
- m_dialog->OnPlayerDisconnect(m_players.find(pid)->second.name);
-
{
std::lock_guard<std::recursive_mutex> lkp(m_crit.players);
+ const auto it = m_players.find(pid);
+ if (it == m_players.end())
+ break;
+
+ const auto& player = it->second;
+ INFO_LOG(NETPLAY, "Player %s (%d) left", player.name.c_str(), pid);
+ m_dialog->OnPlayerDisconnect(player.name);
m_players.erase(m_players.find(pid));
}