mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 00:48:56 +01:00
[7396] Fixed crash at group disband after some player invite decline and offline. Author: VladimirMangos
Correctly cleanup invites list at decline. --HG-- branch : trunk
This commit is contained in:
@@ -225,26 +225,16 @@ void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ )
|
||||
Group *group = GetPlayer()->GetGroupInvite();
|
||||
if (!group) return;
|
||||
|
||||
// remember leader if online
|
||||
Player *leader = objmgr.GetPlayer(group->GetLeaderGUID());
|
||||
|
||||
/** error handling **/
|
||||
// uninvite, group can be deleted
|
||||
GetPlayer()->UninviteFromGroup();
|
||||
|
||||
if(!leader || !leader->GetSession())
|
||||
return;
|
||||
/********************/
|
||||
|
||||
// everything's fine, do it
|
||||
if(!group->IsCreated())
|
||||
{
|
||||
// note: this means that if you invite more than one person
|
||||
// and one of them declines before the first one accepts
|
||||
// all invites will be cleared
|
||||
// fixme: is that ok ?
|
||||
group->RemoveAllInvites();
|
||||
delete group;
|
||||
}
|
||||
|
||||
GetPlayer()->SetGroupInvite(NULL);
|
||||
|
||||
// report
|
||||
WorldPacket data( SMSG_GROUP_DECLINE, 10 ); // guess size
|
||||
data << GetPlayer()->GetName();
|
||||
leader->GetSession()->SendPacket( &data );
|
||||
|
||||
@@ -2165,7 +2165,7 @@ void Player::UninviteFromGroup()
|
||||
|
||||
group->RemoveInvite(this);
|
||||
|
||||
if(group->GetMembersCount() <= 1) // group has just 1 member => disband
|
||||
if(group->GetMembersCount() <= 1) // group has just 1 member => disband
|
||||
{
|
||||
if(group->IsCreated())
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "7395"
|
||||
#define REVISION_NR "7396"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
||||
Reference in New Issue
Block a user