diff options
author | Seth ProductEngine <slitovchuk@productengine.com> | 2012-04-26 00:40:42 +0300 |
---|---|---|
committer | Seth ProductEngine <slitovchuk@productengine.com> | 2012-04-26 00:40:42 +0300 |
commit | 784ec584013eff80ab31d10370c14e2d954cea51 (patch) | |
tree | eef2372f86d80de19f940b2f4ac5ca1de38e661c /indra/newview/llworld.cpp | |
parent | 9b87cfbc9182d7ae059734e1d70c089dc1d304b8 (diff) |
MAINT-813 FIXED crash when trying to access the region info after viewer disconnect.
Added checks for LLViewerRegion pointer in LLViewerObject being invalid.
Diffstat (limited to 'indra/newview/llworld.cpp')
-rw-r--r-- | indra/newview/llworld.cpp | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index fbd8b3ada3..3d971e738e 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -1188,20 +1188,23 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* pVOAvatar = (LLVOAvatar*) *iter; - LLVector3d pos_global = pVOAvatar->getPositionGlobal(); - LLUUID uuid = pVOAvatar->getID(); - if( !pVOAvatar->isDead() - && !pVOAvatar->isSelf() - && !uuid.isNull() && - dist_vec_squared(pos_global, relative_to) <= radius_squared) + + if (!pVOAvatar->isDead() && !pVOAvatar->isSelf()) { - if(positions != NULL) - { - positions->push_back(pos_global); - } - if(avatar_ids !=NULL) + LLVector3d pos_global = pVOAvatar->getPositionGlobal(); + LLUUID uuid = pVOAvatar->getID(); + + if (!uuid.isNull() + && dist_vec_squared(pos_global, relative_to) <= radius_squared) { - avatar_ids->push_back(uuid); + if(positions != NULL) + { + positions->push_back(pos_global); + } + if(avatar_ids !=NULL) + { + avatar_ids->push_back(uuid); + } } } } @@ -1232,6 +1235,11 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi } } +bool LLWorld::isRegionListed(const LLViewerRegion* region) const +{ + region_list_t::const_iterator it = find(mRegionList.begin(), mRegionList.end(), region); + return it != mRegionList.end(); +} LLHTTPRegistration<LLEstablishAgentCommunication> gHTTPRegistrationEstablishAgentCommunication( |