From acceab49c63d112ff6c7fa06dbd80566a959955e Mon Sep 17 00:00:00 2001 From: megamage Date: Sat, 7 Mar 2009 10:42:13 -0600 Subject: [7396] Fixed crash at group disband after some player invite decline and offline. Author: VladimirMangos Correctly cleanup invites list at decline. --HG-- branch : trunk --- src/game/GroupHandler.cpp | 20 +++++--------------- src/game/Player.cpp | 2 +- src/shared/revision_nr.h | 2 +- 3 files changed, 7 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index a072b92a0d4..892e8e017a5 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -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 ); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 1fcfab152c3..e5de0154ad4 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -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()) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index c16cc5a29b1..4de2813ddd8 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7395" + #define REVISION_NR "7396" #endif // __REVISION_NR_H__ -- cgit v1.2.3