diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-02-03 17:55:18 +0200 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-02-03 17:55:18 +0200 |
commit | e4a54c80f7e6e9dbe48a2c5e08bcc5f6ac0cc073 (patch) | |
tree | 05177e15dd9088e11420ac915dc7b45a8b145cee /indra/newview/llgroupmgr.cpp | |
parent | 11228d4b7d6be72759625e604fc09bade3cd306e (diff) | |
parent | 005ec1479021e698714dcdc4bab189af6fcf5ff4 (diff) |
merge
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview/llgroupmgr.cpp')
-rw-r--r-- | indra/newview/llgroupmgr.cpp | 12 |
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; } } |