mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
[11534] Guild disban memory losses and unsafe code.
* Make sure that guild object deleted in all cases after disband. * Avoid recusive like way call Disband from DelMember
This commit is contained in:
parent
b5c3ec952f
commit
2cbde12458
6 changed files with 59 additions and 19 deletions
|
|
@ -177,7 +177,14 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket)
|
|||
return;
|
||||
}
|
||||
|
||||
guild->DelMember(slot->guid);
|
||||
// possible last member removed, do cleanup, and no need events
|
||||
if (guild->DelMember(slot->guid))
|
||||
{
|
||||
guild->Disband();
|
||||
delete guild;
|
||||
return;
|
||||
}
|
||||
|
||||
// Put record into guild log
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetObjectGuid(), slot->guid);
|
||||
|
||||
|
|
@ -376,16 +383,23 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/)
|
|||
if (_player->GetObjectGuid() == guild->GetLeaderGuid())
|
||||
{
|
||||
guild->Disband();
|
||||
delete guild;
|
||||
return;
|
||||
}
|
||||
|
||||
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD);
|
||||
|
||||
if (guild->DelMember(_player->GetObjectGuid()))
|
||||
{
|
||||
guild->Disband();
|
||||
delete guild;
|
||||
return;
|
||||
}
|
||||
|
||||
guild->DelMember(_player->GetObjectGuid());
|
||||
// Put record into guild log
|
||||
guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetObjectGuid());
|
||||
|
||||
guild->BroadcastEvent(GE_LEFT, _player->GetObjectGuid(), _player->GetName());
|
||||
|
||||
SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
|
||||
|
|
@ -406,6 +420,7 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/)
|
|||
}
|
||||
|
||||
guild->Disband();
|
||||
delete guild;
|
||||
|
||||
DEBUG_LOG("WORLD: Guild Successfully Disbanded");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue