From b677a0455de60261b9c8514420602e8ea563b6d7 Mon Sep 17 00:00:00 2001 From: Koncord Date: Thu, 27 Apr 2017 11:26:14 +0800 Subject: [PATCH] [Server] Fix MasterClient crashes --- apps/openmw-mp/MasterClient.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/apps/openmw-mp/MasterClient.cpp b/apps/openmw-mp/MasterClient.cpp index 8751816e4..5a970d919 100644 --- a/apps/openmw-mp/MasterClient.cpp +++ b/apps/openmw-mp/MasterClient.cpp @@ -187,24 +187,34 @@ void MasterClient::Thread() SetPlayers((int) players->size()); auto pIt = players->begin(); - for (int i = 0; pIt != players->end(); i++, pIt++) + if(queryData.players.size() != players->size()) { - if (queryData.players[i] != pIt->second->npc.mName) + queryData.players.clear(); + updated = true; + } + else + { + for (int i = 0; pIt != players->end(); i++, pIt++) { - updated = true; - break; + if (queryData.players[i] != pIt->second->npc.mName) + { + queryData.players.clear(); + updated = true; + break; + } } } if (updated) { + updated = false; if (pIt != players->end()) { - queryData.players.clear(); - transform(players->begin(), players->end(), back_inserter(queryData.players), [](auto pair) + for(auto player : *players) { - return pair.second->npc.mName; - }); + if(!player.second->npc.mName.empty()) + queryData.players.push_back(player.second->npc.mName); + } } Send(PacketMasterAnnounce::FUNCTION_ANNOUNCE); }