summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerregion.cpp
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-08-06 18:03:23 -0600
committerXiaohong Bao <bao@lindenlab.com>2013-08-06 18:03:23 -0600
commitbe8d04c358086d6650fe7a8195949ba6c11096ae (patch)
treef9c6d8b62c9dfee772c549de309a35682b4a20bc /indra/newview/llviewerregion.cpp
parentddef4d7ff74ecff49e76afca58d1d3c2486e8af3 (diff)
fix for SH-4398: Interesting: viewer crash in LLVOCacheEntry::updateParentBoundingInfo
Diffstat (limited to 'indra/newview/llviewerregion.cpp')
-rwxr-xr-xindra/newview/llviewerregion.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 47e59d3c00..49bb05d88e 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -866,8 +866,19 @@ void LLViewerRegion::killCacheEntry(LLVOCacheEntry* entry)
//remove from the forced visible list
mImpl->mVisibleEntries.erase(entry);
- //kill LLViewerObject if exists
- //this should be done by the rendering pipeline automatically.
+ //disconnect from parent if it is a child
+ if(entry->getParentID() > 0)
+ {
+ LLVOCacheEntry* parent = getCacheEntry(entry->getParentID());
+ if(parent)
+ {
+ parent->removeChild(entry);
+ }
+ }
+ else if(entry->getNumOfChildren() > 0)//disconnect children if has any
+ {
+ entry->removeAllChildren();
+ }
entry->setState(LLVOCacheEntry::INACTIVE);