From cd9871197c55395f6943c2911e9a7991540adfa4 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 5 Feb 2014 15:54:40 -0700 Subject: fix a memory crash caused by accessing deleted pointers. --- indra/newview/llvocache.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index 6cf6028ae0..26f6987916 100755 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -589,14 +589,14 @@ void LLVOCacheEntry::updateParentBoundingInfo(const LLVOCacheEntry* child) //------------------------------------------------------------------- LLVOCacheGroup::~LLVOCacheGroup() { - for(S32 i = 0; i < LLViewerCamera::NUM_CAMERAS; i++) - { - if(mOcclusionState[i] & ACTIVE_OCCLUSION) - { - ((LLVOCachePartition*)mSpatialPartition)->removeOccluder(this); - break; - } - } + //for(S32 i = 0; i < LLViewerCamera::NUM_CAMERAS; i++) + //{ + // if(mOcclusionState[i] & ACTIVE_OCCLUSION) + // { + // ((LLVOCachePartition*)mSpatialPartition)->removeOccluder(this); + // break; + // } + //} } //virtual @@ -979,7 +979,11 @@ void LLVOCachePartition::processOccluders(LLCamera* camera) group->doOcclusion(camera, &shift); group->clearOcclusionState(LLOcclusionCullingGroup::ACTIVE_OCCLUSION); } - } + } + + //safe to clear mOccludedGroups here because only the world camera accesses it. + mOccludedGroups.clear(); + sNeedsOcclusionCheck = FALSE; } void LLVOCachePartition::resetOccluders() -- cgit v1.2.3