TrinityCore/TrinityCore — pull request #10724 by jackpoz (2013-09-05 20:11:16+00:00)
Title: Core/Guild: Fix memory leak on Guild disband

Fix memory leak when disbanding a Guild, removed from GuildMgr but never deleted. Due to the different ways of how Guild::Disband() and Guild::DeleteMember() are called, each call to these methods has a different way to delete the Guild if empty/invalid.

Valgrind log:
2,127 (240 direct, 1,887 indirect) bytes in 1 blocks are definitely lost in loss record 54 of 81
at operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
by guild_commandscript::HandleGuildCreateCommand(ChatHandler*, char const*) (cs_guild.cpp:91)
by ChatHandler::ExecuteCommandInTable(ChatCommand*, char const*, std::string const&) (Chat.cpp:339)
by ChatHandler::ExecuteCommandInTable(ChatCommand*, char const*, std::string const&) (Chat.cpp:320)
by ChatHandler::ParseCommands(char const*) (Chat.cpp:466)
by WorldSession::HandleMessagechatOpcode(WorldPacket&) (ChatHandler.cpp:217)
by WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:317)
by World::UpdateSessions(unsigned int) (World.cpp:2632)
by World::Update(unsigned int) (World.cpp:1989)
by WorldRunnable::run() (WorldRunnable.cpp:60)
by ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
by ACE_OS_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)