summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrew Dyukov <adyukov@productengine.com>2010-02-15 21:07:12 +0200
committerAndrew Dyukov <adyukov@productengine.com>2010-02-15 21:07:12 +0200
commitf25fda6edc2b7d4c835dd2d113e01f3878f4c00d (patch)
tree0cec9ab30205c6d75ffde64f2700e5ca4e07b2a7 /indra
parentb20e7dcb7221a949318f0dbe3084f82b3f8d6173 (diff)
Fixed major bug EXT-4778 ([crashhunters] Crash @ LLGroupMgr::sendGroupMemberEjects [secondlife-bin llgroupmgr.cpp:1708])
- Replaced usage of map iterator (which later became invalid and this caused crash) with pointer to data. --HG-- branch : product-engine
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llgroupmgr.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 4db75bbd8a..686e2dd734 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -1730,6 +1730,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(*it);
if (mit != group_datap->mMembers.end())
{
+ LLGroupMemberData* member_data = (*mit).second;
// Add them to the message
if (start_message)
{
@@ -1752,8 +1753,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
}
// Clean up groupmgr
- for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin();
- rit != (*mit).second->roleEnd(); ++rit)
+ for (LLGroupMemberData::role_list_t::iterator rit = member_data->roleBegin();
+ rit != member_data->roleEnd(); ++rit)
{
if ((*rit).first.notNull() && (*rit).second!=0)
{
@@ -1766,7 +1767,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
group_datap->mMembers.erase(*it);
llwarns << "LLGroupMgr::sendGroupMemberEjects - deleting memnber data " << llendl;
- delete (*mit).second;
+ delete member_data;
}
}