diff options
| author | jackpoz <giacomopoz@gmail.com> | 2013-09-05 21:10:10 +0200 | 
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2013-09-05 21:14:32 +0200 | 
| commit | b056bc976c15364f81f80cdfb4f545a1e727612a (patch) | |
| tree | 17cd0ec8f1b12f59ccfaedfe15e4482e14d46e9c /src/server/game/Guilds/GuildMgr.cpp | |
| parent | d5d0802262637d5b32555ec453b2034b6be247b8 (diff) | |
Core/Guild: Fix Guild validation crash on start up
Partially revert 58ec4e531914121144b6f852e3abf27cbb2f6fc4 and increment GuildStore iterator before validating Guilds. This is required because Guild::Validate() removes the Guild from GuildStore if invalid.
Closes #8363
Diffstat (limited to 'src/server/game/Guilds/GuildMgr.cpp')
| -rw-r--r-- | src/server/game/Guilds/GuildMgr.cpp | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index 3fc4e839651..1fcc6ec4e6e 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -378,20 +378,13 @@ void GuildMgr::LoadGuilds()      TC_LOG_INFO(LOG_FILTER_GUILD, "Validating data of loaded guilds...");      {          uint32 oldMSTime = getMSTime(); -        std::set<Guild*> rm; // temporary storage to avoid modifying GuildStore with RemoveGuild() while iterating -        for (GuildContainer::iterator itr = GuildStore.begin(); itr != GuildStore.end(); ++itr) +        for (GuildContainer::iterator itr = GuildStore.begin(); itr != GuildStore.end();)          {              Guild* guild = itr->second; +            ++itr;              if (guild && !guild->Validate()) -                rm.insert(guild); -        } - -        for (std::set<Guild*>::iterator itr = rm.begin(); itr != rm.end(); ++itr) -        { -            Guild* guild = *itr; -            RemoveGuild(guild->GetId()); -            delete guild; +                delete guild;          }          TC_LOG_INFO(LOG_FILTER_SERVER_LOADING, ">> Validated data of loaded guilds in %u ms", GetMSTimeDiffToNow(oldMSTime));  | 
