summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-03 17:14:04 +0200
committerYchebotarev ProductEngine <ychebotarev@productengine.com>2010-02-03 17:14:04 +0200
commit3689b28bf7066a750d24dbb34a809a6d2fa953ed (patch)
tree62653da7d5df12bb8dd02d3e187b0576420e2f47
parent57234d2744cd55a513a885a0b5e78e0b33ceebbf (diff)
merge
--HG-- branch : product-engine
-rw-r--r--indra/newview/llgroupmgr.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 8bd0e520c3..72a52ba13b 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1714,6 +1714,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
for (std::vector<LLUUID>::iterator it = member_ids.begin();
it != member_ids.end(); ++it)
{
+ LLUUID& ejected_member_id = (*it);
+
// Can't use 'eject' to leave a group.
if ((*it) == gAgent.getID()) continue;
@@ -1734,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
}
msg->nextBlock("EjectData");
- msg->addUUID("EjecteeID",(*it));
+ msg->addUUID("EjecteeID",ejected_member_id);
if (msg->isSendFull())
{
@@ -1746,13 +1748,15 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin();
rit != (*mit).second->roleEnd(); ++rit)
{
- if ((*rit).first.notNull())
+ if ((*rit).first.notNull() && (*rit).second!=0)
{
- (*rit).second->removeMember(*it);
+ (*rit).second->removeMember(ejected_member_id);
}
}
- delete (*mit).second;
+
group_datap->mMembers.erase(*it);
+
+ delete (*mit).second;
}
}