diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-09-06 02:06:24 -0700 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-09-06 02:06:24 -0700 |
| commit | a65c0ac5769d390f5e039d272189ef0b0eee0482 (patch) | |
| tree | bd93c256e74a585ab7f8d6cc1df4a27930417efc /src | |
| parent | 458f5b9502da9f861ba729142dd63c3a98191ece (diff) | |
| parent | b056bc976c15364f81f80cdfb4f545a1e727612a (diff) | |
Merge pull request #10722 from jackpoz/guild_startup_crashfix
Core/Guild: Fix Guild validation crash on start up
Diffstat (limited to 'src')
| -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)); |
