Browse Source

Missing lock and setting mutex name for groups

Additional changes for Fix #66
image 3 năm trước cách đây
mục cha
commit
6547d1ba67

+ 1 - 0
EQ2/source/WorldServer/PlayerGroups.cpp

@@ -31,6 +31,7 @@ extern ZoneList	zone_list;
 
 PlayerGroup::PlayerGroup(int32 id) {
 	m_id = id;
+	MGroupMembers.SetName("MGroupMembers");
 }
 
 PlayerGroup::~PlayerGroup() {

+ 2 - 0
EQ2/source/WorldServer/client.cpp

@@ -3512,11 +3512,13 @@ void Client::Zone(ZoneServer* new_zone, bool set_coords) {
 	// block out the member info for the group
 	if (this->GetPlayer()->GetGroupMemberInfo())
 	{
+		world.GetGroupManager()->GroupLock(__FUNCTION__, __LINE__);
 		PlayerGroup* group = world.GetGroupManager()->GetGroup(this->GetPlayer()->GetGroupMemberInfo()->group_id);
 		group->MGroupMembers.writelock();
 		this->GetPlayer()->GetGroupMemberInfo()->client = 0;
 		this->GetPlayer()->GetGroupMemberInfo()->member = 0;
 		group->MGroupMembers.releasewritelock();
+		world.GetGroupManager()->ReleaseGroupLock(__FUNCTION__, __LINE__);
 	}
 
 	client_zoning = true;