From a0519a487af7773178280c5638a9524e33356fae Mon Sep 17 00:00:00 2001 From: tycho Date: Sat, 19 Sep 2015 17:22:57 +0100 Subject: Fixed wrong assumtion regarding RemoveClient Remove client can be called with a client that is not present in the chunk --- src/Chunk.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/Chunk.cpp') diff --git a/src/Chunk.cpp b/src/Chunk.cpp index 6b061c53f..7a6938b77 100644 --- a/src/Chunk.cpp +++ b/src/Chunk.cpp @@ -1885,7 +1885,11 @@ bool cChunk::AddClient(cClientHandle * a_Client) void cChunk::RemoveClient(cClientHandle * a_Client) { - m_LoadedByClient.erase(std::remove(m_LoadedByClient.begin(), m_LoadedByClient.end(), a_Client)); + auto itr = std::remove(m_LoadedByClient.begin(), m_LoadedByClient.end(), a_Client); + // We should always remove at most one client. + ASSERT(std::distance(itr, m_LoadedByClient.end()) <= 1); + // Note: itr can equal m_LoadedByClient.end() + m_LoadedByClient.erase(itr, m_LoadedByClient.end()); if (!a_Client->IsDestroyed()) { -- cgit v1.2.3