diff options
| author | Brandon Rothweiler <brandonrothweiler@gmail.com> | 2019-08-13 18:00:12 -0700 |
|---|---|---|
| committer | Brandon Rothweiler <brandonrothweiler@gmail.com> | 2019-08-13 18:00:12 -0700 |
| commit | 8857db98339bbf902cbc95c24822dbe1ce5ffa05 (patch) | |
| tree | 6d6b5e3ce0d35f500368539d2430efc3d141759b /Source | |
| parent | fdfa14d9cc412d6ed8db841136ef62b6b3facb3e (diff) | |
Check validity of iterator before dereferencing
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/NetPlayClient.cpp | 11 |
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)); } |
